Re: [PATCH] tools/perf/metricgroup: Fix printing event names of metric group with multiple events incase of overlapping events
From: kajoljain
Date: Mon Jan 20 2020 - 03:53:40 EST
On 1/8/20 9:32 PM, Jiri Olsa wrote:
On Wed, Jan 08, 2020 at 02:41:35PM +0530, kajoljain wrote:
SNIP
-ÂÂÂ int i = 0;
+ÂÂÂ int i = 0, j = 0;
ÂÂÂÂÂ bool leader_found;
 Â evlist__for_each_entry (perf_evlist, ev) {
+ÂÂÂÂÂÂÂ j++;
+ÂÂÂÂÂÂÂ if (j <= iterator_perf_evlist)
+ÂÂÂÂÂÂÂÂÂÂÂ continue;
ÂÂÂÂÂÂÂÂÂ if (!strcmp(ev->name, ids[i])) {
ÂÂÂÂÂÂÂÂÂÂÂÂÂ if (!metric_events[i])
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ metric_events[i] = ev;
@@ -146,6 +151,7 @@ static struct evsel *find_evsel_group(struct
evlist *perf_evlist,
ÂÂÂÂÂÂÂÂÂÂÂÂÂ }
ÂÂÂÂÂÂÂÂÂ }
ÂÂÂÂÂ }
+ÂÂÂ iterator_perf_evlist = j;
 Â return metric_events[0];
 }
Thanks for reporting and fixing this issue.
I just have one question, do we really need a *static variable* to track
the matched events? Perhaps using an input parameter?
Hi Jin,
The other way I come up with to solve this issue is, making change in
perf_evlist itself by adding some flag in event name, to keep track of
matched events.
As if we change event name itself, next time when we compare it won't
matched. But in that case we need to remove those flag later. Which will
increase the
complexity. If you have any suggestions, please let me know.
we already keep evsel::cpu_iter for similar concept
so I guess we could have some iterator_perf_evlist variable in evlist..
that is if we don't find other solution (other than static varable)
Hi Jiri,
ÂÂÂÂÂÂÂÂ Thanks for reviewing the patch. I checked 'evsel::cpu_iter'
variable, I think it added recently and I am not able to find any
similar kind of variable in
ÂÂÂ ÂÂÂÂ evlist. Please let me know if my understanding is fine. Do you
want me to add new variable in evlist itself or there is any other way
possible.
Thanks,
Kajol
thanks,
jirka