Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754147AbdLUSJ5 (ORCPT ); Thu, 21 Dec 2017 13:09:57 -0500 Received: from mga04.intel.com ([192.55.52.120]:49740 "EHLO mga04.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751865AbdLUSJw (ORCPT ); Thu, 21 Dec 2017 13:09:52 -0500 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.45,437,1508828400"; d="scan'208";a="186146338" 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 V3 00/12] perf top overwrite mode Date: Thu, 21 Dec 2017 10:08:42 -0800 Message-Id: <1513879734-237492-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 Content-Length: 3002 Lines: 70 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-7: 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 8-12: 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 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 (12): perf evlist: remove stale mmap read for backward perf mmap: factor out function to find ringbuffer position 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 top: switch default mode to overwrite mode perf top: check the latency of perf_top__mmap_read tools/perf/builtin-top.c | 139 +++++++++++++++++++++++++--- tools/perf/tests/backward-ring-buffer.c | 7 +- tools/perf/ui/browsers/hists.c | 12 ++- 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/mmap.c | 158 ++++++++++++++++++-------------- tools/perf/util/mmap.h | 10 +- 9 files changed, 244 insertions(+), 110 deletions(-) -- 2.5.5