Re: [tip:perf/urgent] perf/x86/cqm: Fix CQM handling of grouping events into a cache_group

From: Vikas Shivappa
Date: Wed Mar 23 2016 - 18:49:56 EST




On Wed, 23 Mar 2016, Matt Fleming wrote:

On Mon, 21 Mar, at 11:14:37AM, Vikas Shivappa wrote:


Before MBM , the below condition was never hit because we had only one event ?

- if (a->hw.target == b->hw.target)
+ if (a->hw.target == b->hw.target) {
+ b->hw.is_group_event = true;

We are trying to address this for cases where different MBM(local or total)
and cqm events are grouped into one RMID.

I can't test these changes, so I'm only working from memory, but I
seem to recall that this condition is hit if monitoring simultaneously
from two invocations of perf. It's also possible to have pid/tid
groups overlapping, and that needs to be handled.

Each task in a multithreaded process has an event. So it gets a different RMID. If two perf instances invoke the same pid then both of the instances expect to see the counters so its reported to both of them.


Which is the case which led to duplicate values ?

Good question. Try monitoring a multithread process with these changes
and see if you get duplicate values reported.

perf starts an event for each thread even when you give -p <process id> a process which has multiple threads).
So it sends the pid of each thread to monitor and they get all seperate RMIDs. This should apply to the groups overlapping as well as this is dealing with only the perf task events..