Re: perf: [patch] regression with PERF_EVENT_IOC_REFRESH

From: Peter Zijlstra
Date: Tue May 31 2011 - 03:18:07 EST


On Mon, 2011-05-30 at 21:33 -0400, Vince Weaver wrote:
> On Sun, 29 May 2011, Vince Weaver wrote:
>
> > On Sat, 28 May 2011, Peter Zijlstra wrote:
> >
> > > On Fri, 2011-05-27 at 23:38 -0400, Vince Weaver wrote:
> > > > on that note (and while trying to document exactly what the ioctls do) it
> > > > seems that a PERF_EVENT_IOC_REFRESH with an argument of anything higher
> > > > than one does not work on kernels 2.6.36 and newer. The behavior acts
> > > > as if 1 was passed, even if you pass in, say, 3.
> > >
> > > Urgh, no that should definitely work. Thanks for the test-case, I'll
> > > work on that (probably not until Monday though, but who knows).
> > >
> >
> > after a painfully long bisection, it turns out that this problem was in
> > theory introduced by the following commit:
> >
> > d57e34fdd60be7ffd0b1d86bfa1a553df86b7172
> >
> > perf: Simplify the ring-buffer logic: make perf_buffer_alloc() do everything needed
> >
> > I'll see if I can come up with a patch, but it's a bit non-obvious why
> > this commit is affecting the REFRESH value at all.
>
> the problem was the mentioned commit tried to optimize the use of
> watermark and wakeup_watermark without taking into account that
> wakeup_watermark is a union with wakeup_events.
>
> The patch below *should* fix it,

Awesome thanks!

> but something unrelated has broken
> overflow support between 2.6.39 and 3.0-rc1 which I haven't had time to
> investigate. The overflow count is suddenly about 10x what it should be
> though. So the below is semi-untested and I possibly need to do another
> bisect. *sigh*

Yeah, I noticed, I was hunting that as well..
--
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/