Re: [RFC] perf_events: support for uncore a.k.a. nest units

From: stephane eranian
Date: Wed Mar 31 2010 - 09:43:39 EST


On Wed, Mar 31, 2010 at 1:11 AM, Corey Ashford
<cjashfor@xxxxxxxxxxxxxxxxxx> wrote:
> On 3/30/2010 2:28 PM, stephane eranian wrote:
>>
>> On Tue, Mar 30, 2010 at 6:49 PM, Corey Ashford
>> <cjashfor@xxxxxxxxxxxxxxxxxx> Âwrote:
>>>
>>> 4) How do we choose a CPU to do the housekeeping work for a particular
>>> nest
>>> PMU. ÂPeter thought that user space should still specify the it via
>>> open_perf_event() cpu parameter, but there's also an argument to be made
>>> for
>>> the kernel choosing the best CPU to handle the job, or at least make it
>>> optional for the user to choose the CPU.
>>>
>> One of the housekeeping task is to handle uncore PMU interrupts, for
>> instance.
>> That is not a trivial task given that events are managed independently and
>> that you could be monitoring per-thread or system-wide. It may be that
>> some uncore PMU can only interrupt one core. Intel Nehalem can interrupt
>> many at once.
>
> That's a good point, and I think it's unreasonable to expect that the user
> knows exactly how the interrupts are connected from the uncore/nest PMU to
> which CPU(s).
>
> Perhaps one way around this would be to return an error if the chosen CPU
> wasn't fully capable of performing the housekeeping functions for the
> requested PMU. But this certainly isn't ideal, because relying on this
> mechanism would require that the user (or user tool) figure out which CPU is
> fully capable by trial-and-error.
>

I think users should not have to worry about all of this. It is also
fine to restrict
any uncore monitoring to system-wide mode, i.e., not per-thread. But I have
also seen people requesting just that hoping they could draw correlations
between core and uncore events in one run. I think this is less critical though.

In the specific case of CPU-uncore (e.g., Nehalem uncore), you could simply
identify the uncore PMU with the CPU. For anything else, you would definitively
need the file descriptor. The more uniform approach would have been to use
the file descriptor all along, except for per-thread. But that's fine, I think.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/