Re: [PATCH/RFC 2/2] perfcounters: add an mmap method to allowuserspace to read hardware counters

From: Paul Mackerras
Date: Tue Mar 17 2009 - 04:27:58 EST


Peter Zijlstra writes:

> While I think mmap'ed counters is a great idea, I really dont like this
> patch. It adds a second output format unrelated to the regular output
> format, and it doesn't appear to honor the regular output rules either.
> PERF_RECORD_GROUP thingies won't work for example.
>
> Nor is there any kind of queuing, one might want to have multiple events
> in the mmap buffer..

I think you have misunderstood. This is not about sampling counters
*at all*. This is about simple counting counters.

On powerpc, userspace can read the hardware counters directly. This
stuff lets a program that is counting hardware events on itself do
that and translate the result into a full 64-bit value. The
information the program needs in order to do this is (a) which
hardware counter (if any) has been assigned to this particular
perf_counter and (b) what the offset between the hardware counter
value and the full 64-bit perf_counter value is. That, plus a
seqlock-style lock, is what's in the mmapped page.

> I was planning to do this after cleaning up the normal output bits, as
> our current output stuff is a mess:
> - its spread out over arch code (seems daft to me, we should all output
> the same)
> - its useless for pretty much anything but the two apps we currently
> have
>
> In particular, it lacks the tid information for sampled data I hinted to
> in the previous email.

Ingo has talked about reusing some of the tracing infrastructure for
reporting perf_counter events to userspace. That sounds like an
excellent idea to me, and that is why I didn't bother with putting the
event queue into the mmapped page at this stage. If it makes sense to
add it, it can be added later.

Paul.
--
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/