From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S965291AbcDYVoI (ORCPT ); Mon, 25 Apr 2016 17:44:08 -0400 Received: from mga02.intel.com ([134.134.136.20]:61649 "EHLO mga02.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S965123AbcDYVoG (ORCPT ); Mon, 25 Apr 2016 17:44:06 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.24,534,1455004800"; d="scan'208";a="966303751" Date: Mon, 25 Apr 2016 14:43:51 -0700 (PDT) From: Vikas Shivappa X-X-Sender: vikas@vshiva-Udesk To: Peter Zijlstra cc: Vikas Shivappa , Vikas Shivappa , tony.luck@intel.com, "Shankar, Ravi V" , "Yu, Fenghua" , x86@kernel.org, linux-kernel@vger.kernel.org, hpa@zytor.com, tglx@linutronix.de, mingo@kernel.org, h.peter.anvin@intel.com Subject: Re: [PATCH 3/4] perf/x86/mbm: Fix mbm counting when RMIDs are reused In-Reply-To: <20160425200512.GN3448@twins.programming.kicks-ass.net> Message-ID: References: <1461371241-4258-1-git-send-email-vikas.shivappa@linux.intel.com> <1461371241-4258-4-git-send-email-vikas.shivappa@linux.intel.com> <20160425091656.GF3430@twins.programming.kicks-ass.net> <20160425200512.GN3448@twins.programming.kicks-ass.net> User-Agent: Alpine 2.10 (DEB 1266 2009-07-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, 25 Apr 2016, Peter Zijlstra wrote: > On Mon, Apr 25, 2016 at 09:44:53AM -0700, Vikas Shivappa wrote: >> >> >> On Mon, 25 Apr 2016, Peter Zijlstra wrote: >> >>> On Fri, Apr 22, 2016 at 05:27:20PM -0700, Vikas Shivappa wrote: >>>> When multiple instances of perf reuse RMID, then we need to start >>>> counting for each instance rather than reporting the current RMID count. >>>> This patch adds a st_count(start count) per event to track the same. >>> >>> what? >>> >> >> Will fix the comit log : >> >> When multiple instances of perf reuse RMID for the same PID, then we need to >> start counting from zero for each new event, rather than reporting the >> current RMID. This patch adds a st_count(start count) per event to track the >> same. >> >> For ex: >> 1.RMID1's total_bytes is 100MB for event1(PID1) >> 2.another perf instance starts measuring the same PID1 with event2. We reuse >> RMID1 as the PID1 is already counted. >> 3.event2 stores st_count as 100MB. >> 4.After some time, when user wants to count event2 and say RMID1's current >> total_bytes 110MB, we report 110MB - 100MB = 10MB > > This is naturally handled by the scheme I outlined in the other patch. Something similar although there is one per rmid and one per event.. u64 read_sample(rmid...) // for each rmid { ... start: 'per rmid' prev = read_hw_counter(); count: cur_count = read_hw_counter(); delta = cur_count - prev; prev = cur_count; total_bytes += delta; return total_bytes; } when we lose the rmid - xchng(event, rmid=-1) { .. 'per event' rc_count = read_sample(event->rmid) - per event start count; 'per event' start_count = 0; } for each event - start: if rmid is reused 'per event' prev = read_sample(rmid); else prev = 0; count: // we use count instead of read count = read_sample(rmid) + rc_count - prev; >