[lkml]   [2017]   [Oct]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
Subject[PATCH 00/10] new mmap_read interfaces for ring buffer
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
- 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 file.
It can be done as below,

For other perf tools, it needs to read and process events one by one.
It can be done as below,
while (event = perf_mmap__read_event) {
//process the event

All the stale interfaces will be removed, which include

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(-)


 \ /
  Last update: 2017-10-10 19:24    [W:0.147 / U:4.408 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site