Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1506397
| From | Ingo Molnar <mingo@kernel.org> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | Re: [GIT PULL 00/52] New Tool: perf c2c |
| Date | 2016-10-22 10:30 +0200 |
| Message-ID | <suZQP-YS-5@gated-at.bofh.it> (permalink) |
| References | <sun8J-Pf-5@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
* Arnaldo Carvalho de Melo <acme@kernel.org> wrote:
> Hi Ingo,
>
> Please consider pulling into tip/perf/core,
>
> Thanks,
>
> - Arnaldo
>
> The following changes since commit 10b37cb59fa1e61fec1386f324615e0e8202cd87:
>
> Merge tag 'perf-vendor_events-for-mingo-20161018' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2016-10-19 15:22:26 +0200)
>
> are available in the git repository at:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-c2c-for-mingo-20161020
>
> for you to fetch changes up to 535bbde62701b2bb298063e9dfa007e8a1ff95d1:
>
> perf c2c report: Add --show-all option (2016-10-19 13:18:31 -0300)
>
> ----------------------------------------------------------------
> - The 'perf c2c' tool provides means for Shared Data C2C/HITM analysis.
>
> It allows you to track down cacheline contention. The tool is based
> on x86's load latency and precise store facility events provided by
> Intel CPUs.
>
> It was tested by Joe Mario and has proven to be useful, finding some
> cacheline contentions. Joe also wrote a blog about c2c tool with
> examples:
>
> https://joemario.github.io/blog/2016/09/01/c2c-blog/
>
> Excerpt of the content on this site:
>
> ---
> At a high level, “perf c2c” will show you:
>
> * The cachelines where false sharing was detected.
> * The readers and writers to those cachelines, and the offsets where those accesses occurred.
> * The pid, tid, instruction addr, function name, binary object name for those readers and writers.
> * The source file and line number for each reader and writer.
> * The average load latency for the loads to those cachelines.
> * Which numa nodes the samples a cacheline came from and which CPUs were involved.
>
> Using perf c2c is similar to using the Linux perf tool today.
> First collect data with “perf c2c record” Then generate a report output with “perf c2c report”
> ---
>
> There one finds extensive details on using the tool, with tips on
> reducing the volume of samples while still capturing enough to do
> its job. (Dick Fowles, Joe Mario, Don Zickus, Jiri Olsa)
>
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
>
> ----------------------------------------------------------------
> Jiri Olsa (52):
> perf c2c: Introduce c2c_decode_stats function
> perf c2c: Introduce c2c_add_stats function
> 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 'cpucnt' 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 TUI browser
> perf c2c report: Add TUI 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 c2c report: Add --no-source option
> perf c2c report: Add --show-all option
>
> tools/perf/Build | 1 +
> tools/perf/Documentation/perf-c2c.txt | 282 ++++
> tools/perf/builtin-c2c.c | 2754 +++++++++++++++++++++++++++++++++
> tools/perf/builtin.h | 1 +
> tools/perf/perf.c | 1 +
> tools/perf/ui/browsers/hists.c | 2 +-
> tools/perf/ui/browsers/hists.h | 1 +
> tools/perf/util/hist.c | 1 +
> tools/perf/util/hist.h | 1 +
> tools/perf/util/mem-events.c | 128 ++
> tools/perf/util/mem-events.h | 37 +
> tools/perf/util/sort.c | 2 +-
> tools/perf/util/sort.h | 1 +
> 13 files changed, 3210 insertions(+), 2 deletions(-)
> create mode 100644 tools/perf/Documentation/perf-c2c.txt
> create mode 100644 tools/perf/builtin-c2c.c
Pulled the perf-c2c-for-mingo-20161021 tag, thanks a lot Arnaldo!
I can see some teething problems. For example if I run it on an older kernel (v4.4
distro kernel), I get this:
triton:~/tip> perf c2c record perf bench sched pipe
# Running 'sched/pipe' benchmark:
# Executed 1000000 pipe operations between two processes
Total time: 12.001 [sec]
12.001919 usecs/op
83320 ops/sec
[ perf record: Woken up 18 times to write data ]
[ perf record: Captured and wrote 5.356 MB perf.data (69804 samples) ]
but there's no 'perf c2c report' TUI output at all:
Shared Data Cache Line Table (0 entries, sorted on remote HITMs)
Total Rmt ----- LLC Load Hitm ----- ---- Store Reference ---- --- Load Dram ---- LLC Total ----- Core Load Hit ----- -- LLC Load Hit -
Index Cacheline records Hitm Total Lcl Rmt Total L1Hit L1Miss Lcl Rmt Ld Miss Loads FB L1 L2 Llc Rm
and just an empty screen.
If I do 'perf report' I get two events:
Available samples
24K cpu/mem-loads,ldlat=30/P
45K cpu/mem-stores/P
and both have some real data.
What am I missing?
Ingo
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[GIT PULL 00/52] New Tool: perf c2c Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-10-20 17:20 +0200
[PATCH 16/52] perf c2c report: Add hitm related dimension keys Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-10-20 17:20 +0200
[PATCH 29/52] perf c2c report: Add 'node' sort key Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-10-20 17:20 +0200
[PATCH 26/52] perf c2c report: Add 'pid' sort key Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-10-20 17:20 +0200
[PATCH 02/52] perf c2c: Introduce c2c_add_stats function Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-10-20 17:20 +0200
[PATCH 45/52] perf c2c report: Recalc width of global sort entries Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-10-20 17:20 +0200
[PATCH 30/52] perf c2c report: Add stats related sort keys Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-10-20 17:20 +0200
[PATCH 27/52] perf c2c report: Add 'tid' sort key Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-10-20 17:20 +0200
[PATCH 50/52] perf c2c: Add man page and credits Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-10-20 17:20 +0200
[PATCH 31/52] perf c2c report: Add 'cpucnt' sort key Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-10-20 17:20 +0200
[PATCH 19/52] perf c2c report: Add llc and remote loads related dimension keys Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-10-20 17:20 +0200
[PATCH 39/52] perf c2c report: Add shared cachelines stats stdio output Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-10-20 17:20 +0200
[PATCH 10/52] perf c2c report: Add cacheline hists processing Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-10-20 17:20 +0200
[PATCH 23/52] perf c2c report: Add hitm percent sort key Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-10-20 17:20 +0200
[PATCH 05/52] perf c2c: Add report subcommand Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-10-20 17:20 +0200
[PATCH 04/52] perf c2c: Add record subcommand Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-10-20 17:20 +0200
[PATCH 15/52] perf c2c report: Add 'iaddr' dimension key Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-10-20 17:20 +0200
Re: [GIT PULL 00/52] New Tool: perf c2c Kim Phillips <kim.phillips@arm.com> - 2016-10-21 01:10 +0200
[PATCH] perf c2c report: Properly check data presence in rb_tree loop Jiri Olsa <jolsa@redhat.com> - 2016-10-21 02:20 +0200
Re: [PATCH] perf c2c report: Properly check data presence in rb_tree loop Kim Phillips <kim.phillips@arm.com> - 2016-10-21 21:30 +0200
[tip:perf/core] perf c2c report: Add main TUI browser tip-bot for Jiri Olsa <tipbot@zytor.com> - 2016-10-22 11:00 +0200
Re: [GIT PULL 00/52] New Tool: perf c2c Jiri Olsa <jolsa@redhat.com> - 2016-10-21 02:30 +0200
Re: [GIT PULL 00/52] New Tool: perf c2c Ingo Molnar <mingo@kernel.org> - 2016-10-22 10:30 +0200
Re: [GIT PULL 00/52] New Tool: perf c2c Jiri Olsa <jolsa@redhat.com> - 2016-10-23 13:10 +0200
Re: [GIT PULL 00/52] New Tool: perf c2c Andi Kleen <andi@firstfloor.org> - 2016-10-24 01:50 +0200
Re: [GIT PULL 00/52] New Tool: perf c2c Jiri Olsa <jolsa@redhat.com> - 2016-10-24 08:40 +0200
Re: [GIT PULL 00/52] New Tool: perf c2c Ingo Molnar <mingo@kernel.org> - 2016-10-24 11:30 +0200
Re: [GIT PULL 00/52] New Tool: perf c2c Jiri Olsa <jolsa@redhat.com> - 2016-10-24 11:50 +0200
csiph-web