Re: [RFC][PATCH 3/3] perf_counter: new output ABI - part 1

From: Ingo Molnar
Date: Sat Mar 21 2009 - 12:21:35 EST



* Peter Zijlstra <a.p.zijlstra@xxxxxxxxx> wrote:

> On Sat, 2009-03-21 at 20:45 +1100, Paul Mackerras wrote:
> > Ingo Molnar writes:
> >
> > > i think it would still be nice to allow plain old-fashioned
> > > poll()+read() loops ... but the logistics of that seem difficult.
> > > mmap() seems to fit this better - and it's probably faster as well.
> > > (as we have to construct the kernel-space pages anyway, so mapping
> > > them isnt that big of an issue)
> > >
> > > per-CPU-ness will be handled naturally via per-cpu counters.
> > >
> > > Paul, can you see any hole/quirkiness in this scheme?
> >
> > The one thing I can see that we would lose is the ability to have a
> > signal delivered on every event. The PAPI developers want to be able
> > to get a signal generated every time the counter overflows, and
> > previously we could do that using the O_ASYNC flag, but now we'll only
> > get a signal every page's worth of events.
>
> Ah, nice, didn't know about O_ASYNC and was thinking we should perhaps
> provide some signal too, seems that's already taken care of, sweet :-)
>
> > So I think we want userspace to be able to say how often we should
> > generate a poll event, i.e. provide a way for userspace to say "please
> > generate a poll event every N counter events". That would also solve
> > the problem of 1 page not being a valid configuration - you could set
> > the poll interval to the number of events that fit in half a page, for
> > instance.
>
> Sure, can do, sounds like s sensible extension -- except it will
> be hard to guess the event size for some future events like
> callchains and mmap data.

Agreed. Looks like a perfect fit for yet another ioctl/fcntl method?

Ingo
--
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/