Re: [PATCH v7 09/12] perf stat: Use affinity for opening events

From: Andi Kleen
Date: Wed Nov 20 2019 - 17:31:03 EST


> > + evlist__for_each_cpu (evsel_list, i, cpu) {
> > + affinity__set(&affinity, cpu);
> > + /* First close errored or weak retry */
> > + evlist__for_each_entry(evsel_list, counter) {
> > + if (!counter->reset_group && !counter->errored)
> > + continue;
> > + if (evsel__cpu_iter_skip_no_inc(counter, cpu))
> > + continue;
> > + perf_evsel__close_cpu(&counter->core, counter->cpu_iter);
> > + }
> > + /* Now reopen weak */
> > + evlist__for_each_entry(evsel_list, counter) {
> > + if (!counter->reset_group && !counter->errored)
> > + continue;
> > + if (evsel__cpu_iter_skip(counter, cpu))
> > + continue;
>
> why staring at this I wonder why can't we call perf_evsel__close_cpu in
> here and remove the above loop? together with evsel__cpu_iter_skip_no_inc
> function

We only want to close events which errored or need a weak entry.
The others can stay open. perf_evsel__close_cpu closes all unconditionally.

-Andi