Re: [PATCH V2 03/13] perf/x86: output sampling overhead
From: Peter Zijlstra
Date: Tue Dec 06 2016 - 06:20:42 EST
On Fri, Dec 02, 2016 at 04:19:11PM -0500, kan.liang@xxxxxxxxx wrote:
> From: Kan Liang <kan.liang@xxxxxxxxx>
>
> On x86, NMI handler is the most important part which brings overhead
> for sampling. Adding a pmu specific overhead type
> PERF_PMU_SAMPLE_OVERHEAD for it.
>
> For other architectures which may don't have NMI, the overhead type can
> be reused.
>
> Signed-off-by: Kan Liang <kan.liang@xxxxxxxxx>
> ---
> arch/x86/events/core.c | 17 ++++++++++++++++-
> arch/x86/events/perf_event.h | 2 ++
> include/uapi/linux/perf_event.h | 1 +
> 3 files changed, 19 insertions(+), 1 deletion(-)
>
> diff --git a/arch/x86/events/core.c b/arch/x86/events/core.c
> index 9d4bf3a..de40f96 100644
> --- a/arch/x86/events/core.c
> +++ b/arch/x86/events/core.c
> @@ -1397,6 +1397,9 @@ static void x86_pmu_del(struct perf_event *event, int flags)
>
> perf_event_update_userpage(event);
>
> + if ((flags & PERF_EF_LOG) && cpuc->nmi_overhead.nr)
> + perf_log_overhead(event, PERF_PMU_SAMPLE_OVERHEAD, &cpuc->nmi_overhead);
> +
> do_del:
> if (x86_pmu.del) {
> /*
That's not at all mentioned in the changelog, and it clearly isn't
nmi_overhead.