Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1486456

[PATCHv3 00/61] perf c2c: Add new tool to analyze cacheline contention on NUMA systems

From Jiri Olsa <jolsa@kernel.org>
Newsgroups linux.kernel
Subject [PATCHv3 00/61] perf c2c: Add new tool to analyze cacheline contention on NUMA systems
Date 2016-09-19 15:20 +0200
Message-ID <sj6Eh-5Vj-3@gated-at.bofh.it> (permalink)
Organization linux.* mail to news gateway

Show all headers | View raw


hi,
sending new version of c2c patches (v3) originally posted in here:
  http://lwn.net/Articles/588866/

I took the old set and reworked it to fit into current upstream code.
It follows the same logic as original patch and provides (almost) the
same stdio interface. In addition new TUI interface was added.

The perf c2c tool provides means for Shared Data C2C/HITM analysis.
It allows you to track down the cacheline contentions. The tool is
based on x86's load latency and precise store facility events provided
by Intel CPUs.

The tool was tested by Joe Mario and has proven to be useful and found
some cachelines contentions. Joe also wrote a blog about c2c tool with
examples located in here:

  https://joemario.github.io/blog/2016/09/01/c2c-blog/

Code is also available in:
  git://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf.git
  perf/c2c

Testing:
  $ perf c2c record -a [workload]
  $ perf c2c report [--stdio]
  $ man perf-c2c

  It's most likely you won't generate any remote HITMs on common
  laptops, so to get results for local HITMs please use:

  $ perf c2c report -d lcl [--stdio]


thanks,
jirka


Cc: "Michael Trapp" <michael.trapp@sap.com>
Cc: "Long, Wai Man" <waiman.long@hpe.com>
---
Jiri Olsa (61):
      perf symbols: Do not open device files again
      perf tools: Remove superfluous initialization of weight
      perf tools: Make hist_entry__snprintf work over struct perf_hpp_list
      perf tools: Use bigger buffer for stdio headers
      perf tools: Introduce c2c_decode_stats function
      perf tools: Introduce c2c_add_stats function
      perf tools: Make reset_dimensions global
      perf tools: Make output_field_add and sort_dimension__add global
      perf tools: Make several sorting functions global
      perf tools: Make several display functions global
      perf tools: Make hist_entry__snprintf function global
      perf tools: Make hists__fprintf_headers function global
      perf c2c: Add c2c command
      perf c2c: Add record subcommand
      perf c2c: Add report subcommand
      perf c2c report: Add dimension support
      perf c2c report: Add sort_entry dimension support
      perf c2c report: Fallback to standard dimensions
      perf c2c report: Add sample processing
      perf c2c report: Add cacheline hists processing
      perf c2c report: Decode c2c_stats for hist entries
      perf c2c report: Add header macros
      perf c2c report: Add dcacheline dimension key
      perf c2c report: Add offset dimension key
      perf c2c report: Add iaddr dimension key
      perf c2c report: Add hitm related dimension keys
      perf c2c report: Add stores related dimension keys
      perf c2c report: Add loads related dimension keys
      perf c2c report: Add llc and remote loads related dimension keys
      perf c2c report: Add llc load miss dimension key
      perf c2c report: Add total record sort key
      perf c2c report: Add total loads sort key
      perf c2c report: Add hitm percent sort key
      perf c2c report: Add hitm/store percent related sort keys
      perf c2c report: Add dram related sort keys
      perf c2c report: Add pid sort key
      perf c2c report: Add tid sort key
      perf c2c report: Add symbol and dso sort keys
      perf c2c report: Add node sort key
      perf c2c report: Add stats related sort keys
      perf c2c report: Add cpu cnt sort key
      perf c2c report: Add src line sort key
      perf c2c report: Setup number of header lines for hists
      perf c2c report: Set final resort fields
      perf c2c report: Add stdio output support
      perf c2c report: Add main browser
      perf c2c report: Add cacheline browser
      perf c2c report: Add global stats stdio output
      perf c2c report: Add shared cachelines stats stdio output
      perf c2c report: Add c2c related stats stdio output
      perf c2c report: Allow to report callchains
      perf c2c report: Limit the cachelines table entries
      perf c2c report: Add support to choose local HITMs
      perf c2c report: Allow to set cacheline sort fields
      perf c2c report: Recalc width of global sort entries
      perf c2c report: Add cacheline index entry
      perf c2c report: Add support to manage symbol name length
      perf c2c report: Iterate node display in browser
      perf c2c report: Add help windows
      perf c2c: Add man page and credits
      perf tools: Fix width computation for srcline sort entry

 tools/perf/Build                      |    1 +
 tools/perf/Documentation/perf-c2c.txt |  276 ++++
 tools/perf/builtin-c2c.c              | 2732 +++++++++++++++++++++++++++++++++
 tools/perf/builtin.h                  |    1 +
 tools/perf/perf.c                     |    1 +
 tools/perf/ui/browsers/hists.c        |    4 +-
 tools/perf/ui/browsers/hists.h        |    1 +
 tools/perf/ui/hist.c                  |    2 +-
 tools/perf/ui/stdio/hist.c            |   11 +-
 tools/perf/util/dso.c                 |    8 +-
 tools/perf/util/evsel.c               |    2 -
 tools/perf/util/hist.c                |    7 +-
 tools/perf/util/hist.h                |    6 +
 tools/perf/util/mem-events.c          |  128 ++
 tools/perf/util/mem-events.h          |   37 +
 tools/perf/util/sort.c                |   18 +-
 tools/perf/util/sort.h                |   13 +
 tools/perf/util/symbol.c              |    3 -
 18 files changed, 3222 insertions(+), 29 deletions(-)
 create mode 100644 tools/perf/Documentation/perf-c2c.txt
 create mode 100644 tools/perf/builtin-c2c.c

Back to linux.kernel | Previous | NextNext in thread | Find similar | Unroll thread


Thread

[PATCHv3 00/61] perf c2c: Add new tool to analyze cacheline contention on NUMA systems Jiri Olsa <jolsa@kernel.org> - 2016-09-19 15:20 +0200
  [PATCH 50/61] perf c2c report: Add c2c related stats stdio output Jiri Olsa <jolsa@kernel.org> - 2016-09-19 15:20 +0200
  [PATCH 20/61] perf c2c report: Add cacheline hists processing Jiri Olsa <jolsa@kernel.org> - 2016-09-19 15:20 +0200
  [PATCH 46/61] perf c2c report: Add main browser Jiri Olsa <jolsa@kernel.org> - 2016-09-19 15:20 +0200
  [PATCH 51/61] perf c2c report: Allow to report callchains Jiri Olsa <jolsa@kernel.org> - 2016-09-19 15:20 +0200
  [PATCH 22/61] perf c2c report: Add header macros Jiri Olsa <jolsa@kernel.org> - 2016-09-19 15:20 +0200
  [PATCH 60/61] perf c2c: Add man page and credits Jiri Olsa <jolsa@kernel.org> - 2016-09-19 15:20 +0200
  [PATCH 61/61] perf tools: Fix width computation for srcline sort entry Jiri Olsa <jolsa@kernel.org> - 2016-09-19 15:20 +0200
    Re: [PATCH 61/61] perf tools: Fix width computation for srcline sort  entry Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-09-19 16:40 +0200
      Re: [PATCH 61/61] perf tools: Fix width computation for srcline sort  entry Jiri Olsa <jolsa@redhat.com> - 2016-09-19 16:50 +0200
        Re: [PATCH 61/61] perf tools: Fix width computation for srcline sort  entry Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-09-19 17:00 +0200
    [tip:perf/core] perf hists: Fix width computation for srcline sort  entry tip-bot for Jiri Olsa <tipbot@zytor.com> - 2016-09-20 23:50 +0200
  [PATCH 11/61] perf tools: Make hist_entry__snprintf function global Jiri Olsa <jolsa@kernel.org> - 2016-09-19 15:20 +0200
  [PATCH 45/61] perf c2c report: Add stdio output support Jiri Olsa <jolsa@kernel.org> - 2016-09-19 15:20 +0200
  [PATCH 08/61] perf tools: Make output_field_add and sort_dimension__add global Jiri Olsa <jolsa@kernel.org> - 2016-09-19 15:20 +0200
  [PATCH 58/61] perf c2c report: Iterate node display in browser Jiri Olsa <jolsa@kernel.org> - 2016-09-19 15:20 +0200
  [PATCH 49/61] perf c2c report: Add shared cachelines stats stdio output Jiri Olsa <jolsa@kernel.org> - 2016-09-19 15:20 +0200
  [PATCH 56/61] perf c2c report: Add cacheline index entry Jiri Olsa <jolsa@kernel.org> - 2016-09-19 15:20 +0200
  [PATCH 27/61] perf c2c report: Add stores related dimension keys Jiri Olsa <jolsa@kernel.org> - 2016-09-19 15:20 +0200
  [PATCH 36/61] perf c2c report: Add pid sort key Jiri Olsa <jolsa@kernel.org> - 2016-09-19 15:20 +0200
  [PATCH 57/61] perf c2c report: Add support to manage symbol name length Jiri Olsa <jolsa@kernel.org> - 2016-09-19 15:20 +0200
  [PATCH 15/61] perf c2c: Add report subcommand Jiri Olsa <jolsa@kernel.org> - 2016-09-19 15:20 +0200
  [PATCH 37/61] perf c2c report: Add tid sort key Jiri Olsa <jolsa@kernel.org> - 2016-09-19 15:20 +0200
  [PATCH 39/61] perf c2c report: Add node sort key Jiri Olsa <jolsa@kernel.org> - 2016-09-19 15:20 +0200
  [PATCH 52/61] perf c2c report: Limit the cachelines table entries Jiri Olsa <jolsa@kernel.org> - 2016-09-19 15:20 +0200
  [PATCH 09/61] perf tools: Make several sorting functions global Jiri Olsa <jolsa@kernel.org> - 2016-09-19 15:20 +0200
  [PATCH 38/61] perf c2c report: Add symbol and dso sort keys Jiri Olsa <jolsa@kernel.org> - 2016-09-19 15:20 +0200
  [PATCH 29/61] perf c2c report: Add llc and remote loads related dimension keys Jiri Olsa <jolsa@kernel.org> - 2016-09-19 15:30 +0200
  [PATCH 35/61] perf c2c report: Add dram related sort keys Jiri Olsa <jolsa@kernel.org> - 2016-09-19 15:30 +0200
  [PATCH 17/61] perf c2c report: Add sort_entry dimension support Jiri Olsa <jolsa@kernel.org> - 2016-09-19 15:30 +0200
  [PATCH 23/61] perf c2c report: Add dcacheline dimension key Jiri Olsa <jolsa@kernel.org> - 2016-09-19 15:30 +0200
  [PATCH 33/61] perf c2c report: Add hitm percent sort key Jiri Olsa <jolsa@kernel.org> - 2016-09-19 15:30 +0200
  [PATCH 12/61] perf tools: Make hists__fprintf_headers function global Jiri Olsa <jolsa@kernel.org> - 2016-09-19 15:30 +0200
  [PATCH 28/61] perf c2c report: Add loads related dimension keys Jiri Olsa <jolsa@kernel.org> - 2016-09-19 15:30 +0200
  [PATCH 05/61] perf tools: Introduce c2c_decode_stats function Jiri Olsa <jolsa@kernel.org> - 2016-09-19 15:30 +0200
    Re: [PATCH 05/61] perf tools: Introduce c2c_decode_stats function Nilay Vaish <nilayvaish@gmail.com> - 2016-09-19 19:20 +0200
      Re: [PATCH 05/61] perf tools: Introduce c2c_decode_stats function Joe Mario <jmario@redhat.com> - 2016-09-19 20:10 +0200
    Re: [PATCH 05/61] perf tools: Introduce c2c_decode_stats function Jiri Olsa <jolsa@redhat.com> - 2016-09-21 11:20 +0200
      Re: [PATCH 05/61] perf tools: Introduce c2c_decode_stats function Don Zickus <dzickus@redhat.com> - 2016-09-21 17:20 +0200
        Re: [PATCH 05/61] perf tools: Introduce c2c_decode_stats function Jiri Olsa <jolsa@redhat.com> - 2016-09-21 17:40 +0200
  [PATCH 02/61] perf tools: Remove superfluous initialization of weight Jiri Olsa <jolsa@kernel.org> - 2016-09-19 15:30 +0200
    Re: [PATCH 02/61] perf tools: Remove superfluous initialization of  weight Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-09-21 17:20 +0200
    [tip:perf/core] perf evsel: Remove superfluous initialization of  weight tip-bot for Jiri Olsa <tipbot@zytor.com> - 2016-09-23 07:30 +0200
  [PATCH 13/61] perf c2c: Add c2c command Jiri Olsa <jolsa@kernel.org> - 2016-09-19 15:30 +0200
  [PATCH 34/61] perf c2c report: Add hitm/store percent related sort keys Jiri Olsa <jolsa@kernel.org> - 2016-09-19 15:30 +0200
  [PATCH 10/61] perf tools: Make several display functions global Jiri Olsa <jolsa@kernel.org> - 2016-09-19 15:30 +0200
  [PATCH 04/61] perf tools: Use bigger buffer for stdio headers Jiri Olsa <jolsa@kernel.org> - 2016-09-19 15:30 +0200
    Re: [PATCH 04/61] perf tools: Use bigger buffer for stdio headers Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-09-21 17:20 +0200
    [tip:perf/core] perf hists: Use bigger buffer for stdio headers tip-bot for Jiri Olsa <tipbot@zytor.com> - 2016-09-23 07:30 +0200
  [PATCH 14/61] perf c2c: Add record subcommand Jiri Olsa <jolsa@kernel.org> - 2016-09-19 15:30 +0200
  [PATCH 32/61] perf c2c report: Add total loads sort key Jiri Olsa <jolsa@kernel.org> - 2016-09-19 15:30 +0200
  [PATCH 06/61] perf tools: Introduce c2c_add_stats function Jiri Olsa <jolsa@kernel.org> - 2016-09-19 15:30 +0200
  [PATCH 31/61] perf c2c report: Add total record sort key Jiri Olsa <jolsa@kernel.org> - 2016-09-19 15:30 +0200
  [PATCH 07/61] perf tools: Make reset_dimensions global Jiri Olsa <jolsa@kernel.org> - 2016-09-19 15:30 +0200
  [PATCH 16/61] perf c2c report: Add dimension support Jiri Olsa <jolsa@kernel.org> - 2016-09-19 15:30 +0200
  [PATCH 30/61] perf c2c report: Add llc load miss dimension key Jiri Olsa <jolsa@kernel.org> - 2016-09-19 15:30 +0200
  [PATCH 18/61] perf c2c report: Fallback to standard dimensions Jiri Olsa <jolsa@kernel.org> - 2016-09-19 15:30 +0200
  [PATCH 25/61] perf c2c report: Add iaddr dimension key Jiri Olsa <jolsa@kernel.org> - 2016-09-19 15:30 +0200

csiph-web