From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756604AbdJJRUz (ORCPT ); Tue, 10 Oct 2017 13:20:55 -0400 Received: from mga07.intel.com ([134.134.136.100]:44258 "EHLO mga07.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756520AbdJJRUv (ORCPT ); Tue, 10 Oct 2017 13:20:51 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.43,359,1503385200"; d="scan'208";a="137137267" From: kan.liang@intel.com To: acme@kernel.org, peterz@infradead.org, mingo@redhat.com, linux-kernel@vger.kernel.org Cc: jolsa@kernel.org, wangnan0@huawei.com, hekuang@huawei.com, namhyung@kernel.org, alexander.shishkin@linux.intel.com, adrian.hunter@intel.com, ak@linux.intel.com, Kan Liang Subject: [PATCH 00/10] new mmap_read interfaces for ring buffer Date: Tue, 10 Oct 2017 10:20:13 -0700 Message-Id: <1507656023-177125-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 From: Kan Liang The mmap_read interfaces for ring buffer has some issues - Not well organized. For example, perf record maintains some codes in builtin-record.c. Other perf tools use perf_mmap__read* functions to access ring buffer. Some of the codes should be shared. - Only support forward mode. Although there is perf_mmap__read_backward, no one use it. It's not well maintained. But perf top need to switch to overwrite backward mode for good performance. - There is bug found on overwrite backward mode. The patch series will move all the mmap_read related code to evlist.c, and provide new standard interfaces to access ring buffer. The new interfaces include, perf_evlist__mmap_read_init //wrapper of perf_mmap__read_init perf_mmap__read_init //Initialization and calculate the range perf_mmap__read_to_file //read the ring buffer and write to file perf_mmap__read_event //read the event in specified range perf_mmap__read_done //Update the md->prev for later use For perf record, it needs to read all available data in ring buffer and write them to perf.data file. It can be done as below, perf_mmap__read_init perf_mmap__read_to_file perf_mmap__consume For other perf tools, it needs to read and process events one by one. It can be done as below, perf_mmap__read_init while (event = perf_mmap__read_event) { //process the event perf_mmap__consume } perf_mmap__read_done All the stale interfaces will be removed, which include perf_evlist__mmap_read perf_evlist__mmap_read_forward perf_evlist__mmap_read_backward perf_evlist__mmap_read_catchup perf_mmap__read_catchup perf_mmap__read_forward perf_mmap__read_backward The patch series only changes the interfaces. It doesn't change the core perf_mmap__read function. There is no functional change. Kan Liang (10): perf record: new interfaces to read ring buffer to file perf tool: fix: Don't discard prev in backward mode perf tool: new functions to read event from ring buffer perf tool: perf_mmap__read_init wraper for evlist perf top: apply new mmap_read interfaces perf trace: apply new mmap_read interfaces perf kvm: apply new mmap_read interfaces perf python: apply new mmap_read interfaces perf tests: apply new mmap_read interfaces perf tool: remove stale mmap_read interfaces tools/perf/arch/x86/tests/perf-time-to-tsc.c | 9 +- tools/perf/builtin-kvm.c | 10 +- tools/perf/builtin-record.c | 111 +++--------- tools/perf/builtin-top.c | 9 +- tools/perf/builtin-trace.c | 9 +- tools/perf/tests/backward-ring-buffer.c | 10 +- tools/perf/tests/bpf.c | 10 +- tools/perf/tests/code-reading.c | 8 +- tools/perf/tests/keep-tracking.c | 8 +- tools/perf/tests/mmap-basic.c | 9 +- tools/perf/tests/openat-syscall-tp-fields.c | 9 +- tools/perf/tests/perf-record.c | 9 +- tools/perf/tests/sw-clock.c | 8 +- tools/perf/tests/switch-tracking.c | 8 +- tools/perf/tests/task-exit.c | 8 +- tools/perf/util/evlist.c | 244 +++++++++++++++++---------- tools/perf/util/evlist.h | 31 ++-- tools/perf/util/python.c | 9 +- 18 files changed, 314 insertions(+), 205 deletions(-) -- 2.5.5