Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1761916AbcLPPNH convert rfc822-to-8bit (ORCPT ); Fri, 16 Dec 2016 10:13:07 -0500 Received: from mga11.intel.com ([192.55.52.93]:48693 "EHLO mga11.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933418AbcLPPMw (ORCPT ); Fri, 16 Dec 2016 10:12:52 -0500 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.33,358,1477983600"; d="scan'208";a="1082702273" From: "Liang, Kan" To: "peterz@infradead.org" , "mingo@redhat.com" , "acme@kernel.org" , "linux-kernel@vger.kernel.org" CC: "alexander.shishkin@linux.intel.com" , "tglx@linutronix.de" , "namhyung@kernel.org" , "jolsa@kernel.org" , "Hunter, Adrian" , "wangnan0@huawei.com" , "mark.rutland@arm.com" , "andi@firstfloor.org" Subject: RE: [PATCH V3 0/6] export perf overheads information (kernel) Thread-Topic: [PATCH V3 0/6] export perf overheads information (kernel) Thread-Index: AQHSUZoDz0YAWSDjXUmYBTq98mhXuKEKuLMA Date: Fri, 16 Dec 2016 15:08:33 +0000 Message-ID: <37D7C6CF3E00A74B8858931C1DB2F077536804E9@SHSMSX103.ccr.corp.intel.com> References: <1481232434-3574-1-git-send-email-kan.liang@intel.com> In-Reply-To: <1481232434-3574-1-git-send-email-kan.liang@intel.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiODM4NjRhNWItMDZhMC00ODkxLThiNTMtZmE2MzhhOTAxNmMyIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX0lDIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE1LjkuNi42IiwiVHJ1c3RlZExhYmVsSGFzaCI6IlV0TEpMMWdrZHJjWFFOT1VkakhsNG95dTdrQVhUSjJHUVwvOCtVdE5URzRRPSJ9 x-ctpclassification: CTP_IC x-originating-ip: [10.239.127.40] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 8BIT MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3361 Lines: 79 Ping. Any comments for the series? Thanks, Kan > Subject: [PATCH V3 0/6] export perf overheads information (kernel) > > From: Kan Liang > > This series only include the kernel related patches. > > Profiling brings additional overhead. High overhead may impacts the > behavior of the profiling object, impacts the accuracy of the profiling result, > and even hang the system. > Currently, perf has dynamic interrupt throttle mechanism to lower the > sample rate and overhead. But it has limitations. > - The mechanism only focus in the sampling overhead. However, there > are other parts which also bring big overhead. E.g, multiplexing. > - The hint from the mechanism doesn't work on fixed period. > - The system changes which caused by the mechanism are not recorded > in the perf.data. Users have no idea about the overhead and its > impact. > Actually, any passive ways like dynamic interrupt throttle mechanism are > only palliative. The best way is to export overhead information, provide > more hints, and help the users design more proper perf command. > > For kernel, three parts can bring obvious overhead. > - sample overhead: For x86, it's the time cost in perf NMI handler. > - multiplexing overhead: The time cost spends on rotate context. > - side-band events overhead: The time cost spends on iterating all > events that need to receive side-band events. > The time cost of those parts are stored in pmu's per-cpu cpuctx. > The tool can call PERF_EVENT_IOC_STAT when it's 'done'. Then the kernel > generates the overhead record PERF_RECORD_OVERHEAD. > > User can use the overhead information to refine their perf command and > get accurate profiling result. For example, if there is high overhead warning, > user may reduce the number of events/increase the period/decrease the > frequency. > Developer can also use the overhead information to find bugs. > > Changes since V2: > - Separate kernel patches from the previous version > - Add PERF_EVENT_IOC_STAT to control overhead statistics > - Collect per pmu overhead information > - Store the overhead information in pmu's cpuctx > - Add CPU information in overhead record > > Changes since V1: > - fix u32 holes and remove duplicate CPU information > - configurable overhead logging > - Introduce the concept of PMU specific overhead and common core > overhead. Rename NMI overhead to PMU sample overhead > - Add log_overhead in perf_event_context to indicate the logging of > overhead > - Refine the output of overhead information > - Use perf CPU time to replace perf write data overhead > - Refine the formula of overhead evaluation > - Refine perf script > > Kan Liang (6): > perf/core: Introduce PERF_RECORD_OVERHEAD > perf/core: Add PERF_EVENT_IOC_STAT to control overhead statistics > perf/x86: implement overhead stat for x86 pmu > perf/core: calculate multiplexing overhead > perf/core: calculate side-band events overhead > perf/x86: calculate sampling overhead > > arch/x86/events/core.c | 45 +++++++++++++++++++++++- > include/linux/perf_event.h | 12 +++++++ > include/uapi/linux/perf_event.h | 44 ++++++++++++++++++++++- > kernel/events/core.c | 77 > ++++++++++++++++++++++++++++++++++++++++- > 4 files changed, 175 insertions(+), 3 deletions(-) > > -- > 2.4.3