Re: [PATCH v3] perf/core: Avoid context switch overheads

From: Peter Zijlstra
Date: Wed Aug 09 2017 - 12:38:20 EST


On Wed, Aug 09, 2017 at 08:29:21AM +0800, çç wrote:
> From: "leilei.lin" <leilei.lin@xxxxxxxxxxxxxxx>
>
> A performance issue caused by less strickly check in task
> sched when these tasks were once attached by per-task perf_event.
>
> A task will alloc task->perf_event_ctxp[ctxn] when it was called
> by perf_event_open, and task->perf_event_ctxp[ctxn] would not
> ever be freed to NULL.
>
> __perf_event_task_sched_in()
> if (task->perf_event_ctxp[ctxn]) // here is always true
> perf_event_context_sched_in() // operate pmu
>
> 50% at most performance overhead was observed under some extreme
> test case. Therefore, add a more strick check as to ctx->nr_events,
> when ctx->nr_events == 0, it's no need to continue.
>
> Signed-off-by: leilei.lin <leilei.lin@xxxxxxxxxxxxxxx>

Thanks!