lkml.org 
[lkml]   [2016]   [Jul]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
Subject[PATCH v13 0/8] perf tools: Support overwritable ring buffer
Date
This patch set enables daemonized perf recording by utilizing
overwritable backward ring buffer. With this feature one can
put perf background, and dump ring buffer records by a SIGUSR2
when he/she find something unusual. For example, following
command record system calls, schedule events and samples on cpu cycles
continously:

# perf record -g -e cycles -e raw_syscalls:*/call-graph=no/ \
-e sched:sched_switch/call-graph=no/ \
--switch-output --overwrite -a

Then by sending SIGUSR2 to perf when lagging is happen, we get multiple
perf.data output, each of them correspond a abnormal event, and the data
size is reasonable:

# ls -l ./perf.data*
-rw------- 1 root root 5122165 May 13 23:51 ./perf.data.2016051323511683
-rw------- 1 root root 5135093 May 13 23:51 ./perf.data.2016051323512107
-rw------- 1 root root 5135213 May 13 23:51 ./perf.data.2016051323512215
-rw------- 1 root root 5135157 May 13 23:51 ./perf.data.2016051323512387

v1 -> v2: Totally redesign: drop the principle of 'channal', use
auxiliary evlist instead. Fix missing documentation.

v2 -> v3: Rename perf_evlist__toggle_paused() to perf_evlist__pause/resume.

v3 -> v4: Update commit message to describe auxiliary evlist more clearly.

v4 -> v5: Reorder commits, ensure '--overwrite' works right after perf
support the option.
Add test cases for auxiliary evlist.
Avoid bug if main evlist is empty.

v5 -> v6: Improve filter pollfd related code.

v6 -> v7: Rebase to newest perf/core.

v7 -> v8: Unmap mmaps from parent and children in
perf_evlist__munmap_filtered(), hide more detail of aux evlist.
Add --tail-synthesize, do synthesize at the end of perf.data.

v8 -> v9: Beautify code of test case, make patch set more granular,
improve documentation.

v9 -> v10: Make patch set more granular: extract preparation code to
patch 1-3.

v10 -> v11: Rebase to newest perf/core: solve conflicts caused by commit
e5cadb93d08 ("perf evlist: Rename for_each() macros to
for_each_entry()").

v11 -> v12: Improve 'perf test backward': skip this test on old kernel,
resolve conflicts.

v12 -> v13: Drop evsel->overwrite, use evsel->attr.write_backward instead.

Arnaldo Carvalho de Melo (1):
perf tools: Drop redundant evsel->overwrite indicator

Wang Nan (7):
perf evlist: Introduce aux evlist
perf tests: Add testcase for auxiliary evlist
perf record: Introduce rec->overwrite_evlist for overwritable events
perf record: Read from overwritable ring buffer
perf tools: Enable overwrite settings
perf tools: Don't warn about out of order event if write_backward is
used
perf tools: Add --tail-synthesize option

tools/perf/Documentation/perf-record.txt | 22 +++
tools/perf/builtin-record.c | 228 +++++++++++++++++++++++++++++--
tools/perf/perf.h | 2 +
tools/perf/tests/backward-ring-buffer.c | 84 +++++++++---
tools/perf/util/evlist.c | 53 +++++--
tools/perf/util/evlist.h | 20 +++
tools/perf/util/evsel.c | 16 ++-
tools/perf/util/evsel.h | 3 +-
tools/perf/util/parse-events.c | 20 ++-
tools/perf/util/parse-events.h | 2 +
tools/perf/util/parse-events.l | 2 +
tools/perf/util/session.c | 22 ++-
12 files changed, 420 insertions(+), 54 deletions(-)

--
1.8.3.4

\
 
 \ /
  Last update: 2016-07-04 08:41    [W:0.082 / U:3.592 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site