[PATCH V2 0/8] perf top overwrite mode
- Date: Wed, 6 Dec 2017 15:32:55 -0800
- From: kan.liang@xxxxxxxxx
- Subject: [PATCH V2 0/8] perf top overwrite mode
From: Kan Liang <kan.liang@xxxxxxxxx>
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-4: Modify perf_mmap__read_catchup and perf_mmap__read_backward.
Make generic code ready for overwrite mode
Patch 5-7: Perf top should only support either overwrite or non-overwrite
Switch default mode to overwrite mode
If kernel doesn't support overwrite mode, fall back to
Patch 8: The latency could be still higher than refresh time in some
extreme cases. Give user some hints to reduce the latency.
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
Kan Liang (8):
perf tools: remove stale perf evlist mmap read for backward
perf tools: rewrite perf mmap read for overwrite
perf tools: reuse perf_mmap__read_catchup in perf_mmap__push
perf tools: introduce perf_mmap__read_event
perf top: check per event overwrite term
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 | 9 +-
tools/perf/ui/browsers/hists.c | 12 ++-
tools/perf/util/evlist.c | 17 ----
tools/perf/util/evlist.h | 4 -
tools/perf/util/mmap.c | 140 ++++++++++++++++++--------------
tools/perf/util/mmap.h | 10 ++-
7 files changed, 229 insertions(+), 102 deletions(-)