Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751129AbeAOUVt (ORCPT + 1 other); Mon, 15 Jan 2018 15:21:49 -0500 Received: from mga04.intel.com ([192.55.52.120]:59564 "EHLO mga04.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751004AbeAOUVs (ORCPT ); Mon, 15 Jan 2018 15:21:48 -0500 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.46,365,1511856000"; d="scan'208";a="22473467" From: kan.liang@intel.com To: acme@kernel.org, peterz@infradead.org, mingo@redhat.com, linux-kernel@vger.kernel.org Cc: wangnan0@huawei.com, jolsa@kernel.org, namhyung@kernel.org, ak@linux.intel.com, yao.jin@linux.intel.com, Kan Liang Subject: [PATCH V4 00/15] perf top overwrite mode Date: Mon, 15 Jan 2018 12:20:36 -0800 Message-Id: <1516047651-164336-1-git-send-email-kan.liang@intel.com> X-Mailer: git-send-email 2.5.5 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Return-Path: From: Kan Liang perf_top__mmap_read has severe performance issue in Knights Landing/Mill, when monitoring in heavy load system. It costs several minutes to finish, which is unacceptable. Currently, perf top is non overwrite mode. For non overwrite mode, it tries to read everything in the ringbuffer and doesn't pause the ringbuffer. Once there are lots of samples delivered persistently, the processing time could be very long. Also, the latest samples could be lost when the ringbuffer is full. It's better to change it to overwrite mode, which takes a snapshot for the system by pausing the ringbuffer and could significantly reducing the processing time (from several minutes to several seconds). Also, the overwrite mode always keep the latest samples. Patch 1-8: Introduce new interfaces for generic code to support overwrite mode for one by one event read. Discards stale interfaces. The patches can be merged separately. Patch 9-15: Add overwrite support to perf top. Perf top should only support either overwrite or non-overwrite mode. Switch default mode to overwrite mode If kernel doesn't support overwrite mode, fall back to non-overwrite mode. Changes since V3: - Separated patches to add new interface perf_mmap__read_init and apply to the perf_mmap__push() - Corrected the comments of perf_mmap__read_done() - Name the pointer parameter with 'p' postfix - Add new rules to check per-event overwrite term in comments. Do the check before perf_evlist__config() - Add a new patch to disable/enable event lost warning in hists browser. Changes since V2: - Move duplicate 'map->prev' out of perf_mmap__read. Modify the perf_mmap__read_event accordingly. - Introduce new interface perf_mmap__read_init to calculate the ringbuffer position - Check perf_missing_features.write_backward - Discard stale interfaces perf_mmap__read_backward and perf_mmap__read_catchup Changes since V1: - New patches 4-6 - Support both overwrite mode and non-overwrite mode. If kernel doesn't support default overwrite mode, fall back to non-overwrite mode. Kan Liang (15): perf evlist: remove stale mmap read for backward perf mmap: introduce perf_mmap__read_init() perf mmap: apply perf_mmap__read_init() to perf_mmap__push() perf mmap: discard 'prev' in perf_mmap__read perf mmap: introduce perf_mmap__read_done perf mmap: introduce perf_mmap__read_event() perf test: update mmap read functions for backward-ring-buffer test perf mmap: discard legacy interface for mmap read perf top: check per-event overwrite term perf evsel: expose perf_missing_features.write_backward perf top: add overwrite fall back perf hists browser: add parameter to disable lost event warning perf top: remove lost events checking perf top: switch default mode to overwrite mode perf top: check the latency of perf_top__mmap_read tools/perf/builtin-c2c.c | 4 +- tools/perf/builtin-report.c | 3 +- tools/perf/builtin-top.c | 150 ++++++++++++++++++++++++++++-- tools/perf/tests/backward-ring-buffer.c | 7 +- tools/perf/ui/browsers/hists.c | 38 +++++--- tools/perf/ui/browsers/hists.h | 3 +- tools/perf/util/evlist.c | 17 ---- tools/perf/util/evlist.h | 4 - tools/perf/util/evsel.c | 5 + tools/perf/util/evsel.h | 2 + tools/perf/util/hist.h | 6 +- tools/perf/util/mmap.c | 157 ++++++++++++++++++-------------- tools/perf/util/mmap.h | 10 +- 13 files changed, 287 insertions(+), 119 deletions(-) -- 2.5.5