RE: [PATCH V6 5/8] perf/x86/intel/uncore: add infrastructure for free running counter

From: Liang, Kan
Date: Mon Mar 19 2018 - 09:00:20 EST


> On Thu, Jan 25, 2018 at 12:13:45PM -0800, kan.liang@xxxxxxxxx wrote:
> > @@ -512,6 +538,17 @@ static int uncore_pmu_event_add(struct
> perf_event *event, int flags)
> > if (!box)
> > return -ENODEV;
> >
> > + /*
> > + * The free funning counter is assigned in event_init().
> > + * The free running counter event and free running counter
> > + * are 1:1 mapped. It doesn't need to be tracked in event_list.
> > + */
> > + if (uncore_pmc_freerunning(hwc->idx)) {
> > + if (flags & PERF_EF_START)
> > + uncore_pmu_event_start(event, 0);
> > + return 0;
> > + }
> > +
> > ret = n = uncore_collect_events(box, event, false);
> > if (ret < 0)
> > return ret;
>
> This will result in some (probably) unexpected scheduling artifacts.
> Probably the only way to really cure that is to have the free running
> counters in their own PMU and not share with the GP counters of this
> box.

I'm not quite sure what the unexpected scheduling artifacts could be.
But, yes, I can move all the free running counters to new PMU for SKX
and later platforms.

Thanks,
Kan