[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <1468219875-243457-1-git-send-email-wangnan0@huawei.com>
Date: Mon, 11 Jul 2016 06:51:07 +0000
From: Wang Nan <wangnan0@...wei.com>
To: <acme@...nel.org>, <lizefan@...wei.com>
CC: <linux-kernel@...r.kernel.org>, <pi3orama@....com>,
<jolsa@...hat.com>, Wang Nan <wangnan0@...wei.com>
Subject: [PATCH v15 0/8] perf tools: Support overwritable ring buffer
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.
v13 -> v14: Follow Jiri Olsa's suggestion: Improve commit message,
add OVERWRITE_EVT_NOTREADY state, stop the state machine if
overwrite_evlist is not generated.
v14 -> v15: Follow Jiri Olsa's suggestion: Improve test case; small code
adjustment.
Arnaldf 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 | 244 +++++++++++++++++++++++++++++--
tools/perf/perf.h | 2 +
tools/perf/tests/backward-ring-buffer.c | 102 ++++++++++---
tools/perf/util/evlist.c | 53 +++++--
tools/perf/util/evlist.h | 12 ++
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, 444 insertions(+), 56 deletions(-)
--
1.8.3.4
Powered by blists - more mailing lists