All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH V4 00/15] perf top overwrite mode
@ 2018-01-15 20:20 kan.liang
  2018-01-15 20:20 ` [PATCH V4 01/15] perf evlist: remove stale mmap read for backward kan.liang
                   ` (14 more replies)
  0 siblings, 15 replies; 20+ messages in thread
From: kan.liang @ 2018-01-15 20:20 UTC (permalink / raw)
  To: acme, peterz, mingo, linux-kernel
  Cc: wangnan0, jolsa, namhyung, ak, yao.jin, Kan Liang

From: Kan Liang <kan.liang@intel.com>

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-8:  Introduce new interfaces for generic code to support
            overwrite mode for one by one event read.
            Discards stale interfaces.
            The patches can be merged separately.
Patch 9-15: Add overwrite support to perf top.
            Perf top should only support either overwrite or non-overwrite
            mode.
            Switch default mode to overwrite mode
            If kernel doesn't support overwrite mode, fall back to
            non-overwrite mode.

Changes since V3:
 - Separated patches to add new interface perf_mmap__read_init and
   apply to the perf_mmap__push()
 - Corrected the comments of perf_mmap__read_done()
 - Name the pointer parameter with 'p' postfix
 - Add new rules to check per-event overwrite term in comments.
   Do the check before perf_evlist__config()
 - Add a new patch to disable/enable event lost warning in hists browser.

Changes since V2:
 - Move duplicate 'map->prev' out of perf_mmap__read. Modify the
   perf_mmap__read_event accordingly.
 - Introduce new interface perf_mmap__read_init to calculate the ringbuffer
   position
 - Check perf_missing_features.write_backward
 - Discard stale interfaces perf_mmap__read_backward and
   perf_mmap__read_catchup

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
   non-overwrite mode.

Kan Liang (15):
  perf evlist: remove stale mmap read for backward
  perf mmap: introduce perf_mmap__read_init()
  perf mmap: apply perf_mmap__read_init() to perf_mmap__push()
  perf mmap: discard 'prev' in perf_mmap__read
  perf mmap: introduce perf_mmap__read_done
  perf mmap: introduce perf_mmap__read_event()
  perf test: update mmap read functions for backward-ring-buffer test
  perf mmap: discard legacy interface for mmap read
  perf top: check per-event overwrite term
  perf evsel: expose perf_missing_features.write_backward
  perf top: add overwrite fall back
  perf hists browser: add parameter to disable lost event warning
  perf top: remove lost events checking
  perf top: switch default mode to overwrite mode
  perf top: check the latency of perf_top__mmap_read

 tools/perf/builtin-c2c.c                |   4 +-
 tools/perf/builtin-report.c             |   3 +-
 tools/perf/builtin-top.c                | 150 ++++++++++++++++++++++++++++--
 tools/perf/tests/backward-ring-buffer.c |   7 +-
 tools/perf/ui/browsers/hists.c          |  38 +++++---
 tools/perf/ui/browsers/hists.h          |   3 +-
 tools/perf/util/evlist.c                |  17 ----
 tools/perf/util/evlist.h                |   4 -
 tools/perf/util/evsel.c                 |   5 +
 tools/perf/util/evsel.h                 |   2 +
 tools/perf/util/hist.h                  |   6 +-
 tools/perf/util/mmap.c                  | 157 ++++++++++++++++++--------------
 tools/perf/util/mmap.h                  |  10 +-
 13 files changed, 287 insertions(+), 119 deletions(-)

-- 
2.5.5

^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2018-01-17 14:40 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-01-15 20:20 [PATCH V4 00/15] perf top overwrite mode kan.liang
2018-01-15 20:20 ` [PATCH V4 01/15] perf evlist: remove stale mmap read for backward kan.liang
2018-01-15 20:20 ` [PATCH V4 02/15] perf mmap: introduce perf_mmap__read_init() kan.liang
2018-01-16 13:12   ` Jiri Olsa
2018-01-16 18:12     ` Liang, Kan
2018-01-15 20:20 ` [PATCH V4 03/15] perf mmap: use perf_mmap__read_init() in perf_mmap__push() kan.liang
2018-01-15 20:20 ` [PATCH V4 04/15] perf mmap: discard 'prev' in perf_mmap__read() kan.liang
2018-01-15 20:20 ` [PATCH V4 05/15] perf mmap: introduce perf_mmap__read_done kan.liang
2018-01-15 20:20 ` [PATCH V4 06/15] perf mmap: introduce perf_mmap__read_event() kan.liang
2018-01-15 20:20 ` [PATCH V4 07/15] perf test: update mmap read functions for backward-ring-buffer test kan.liang
2018-01-15 20:20 ` [PATCH V4 08/15] perf mmap: discard legacy interface for mmap read kan.liang
2018-01-15 20:20 ` [PATCH V4 09/15] perf top: check per-event overwrite term kan.liang
2018-01-15 20:20 ` [PATCH V4 10/15] perf evsel: expose perf_missing_features.write_backward kan.liang
2018-01-15 20:20 ` [PATCH V4 11/15] perf top: add overwrite fall back kan.liang
2018-01-15 20:20 ` [PATCH V4 12/15] perf hists browser: add parameter to disable lost event warning kan.liang
2018-01-17  3:50   ` Namhyung Kim
2018-01-17 14:39     ` Liang, Kan
2018-01-15 20:20 ` [PATCH V4 13/15] perf top: remove lost events checking kan.liang
2018-01-15 20:20 ` [PATCH V4 14/15] perf top: switch default mode to overwrite mode kan.liang
2018-01-15 20:20 ` [PATCH V4 15/15] perf top: check the latency of perf_top__mmap_read kan.liang

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.