Messages in this thread | | | Subject | Re: [PATCH RFC] perf, core: disable pmu while context rotation only if needed | From | Peter Zijlstra <> | Date | Tue, 15 Nov 2011 13:55:18 +0100 |
| |
On Tue, 2011-11-15 at 14:38 +0200, Gleb Natapov wrote: > On Tue, Nov 15, 2011 at 01:07:13PM +0100, Peter Zijlstra wrote: > > On Tue, 2011-11-15 at 13:34 +0200, Gleb Natapov wrote: > > > > > > Currently pmu is disabled and re-enabled on each timer interrupt even > > > when no rotation or frequency adjustment is needed. On Intel CPU this > > > results in two writes into PERF_GLOBAL_CTRL MSR per tick. On bare metal > > > it does not cause significant slowdown, but when running perf in a virtual > > > machine it leads to 20% slowdown on my machine. > > > > > > I detest asymmetric locking like that, does something like the below > > also work for you? > > > It does.
ok, great.
> > > > + if (!rotate && !freq) > > + goto done; > > + > > perf_ctx_lock(cpuctx, cpuctx->task_ctx); > > perf_pmu_disable(cpuctx->ctx.pmu); > > + > > + if (!freq) > > + goto rotate; > > + > Why goto, why not > > if (freq) { > > perf_ctx_adjust_freq(&cpuctx->ctx, interval); > > if (ctx) > > perf_ctx_adjust_freq(ctx, interval); > } > > And the same with next goto.
Because, uhm,. dunno. Let me make that if()s and commit the thing. Thanks!
| |