From: Ingo Molnar <mingo@kernel.org>
To: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: linux-kernel@vger.kernel.org, Linux Weekly News <lwn@lwn.net>,
Andi Kleen <andi@firstfloor.org>, David Ahern <dsahern@gmail.com>,
Don Zickus <dzickus@redhat.com>, Jiri Olsa <jolsa@kernel.org>,
Joe Mario <jmario@redhat.com>, Namhyung Kim <namhyung@kernel.org>,
Peter Zijlstra <a.p.zijlstra@chello.nl>,
Arnaldo Carvalho de Melo <acme@redhat.com>
Subject: Re: [GIT PULL 00/52] New Tool: perf c2c
Date: Sat, 22 Oct 2016 10:28:06 +0200 [thread overview]
Message-ID: <20161022082806.GA4526@gmail.com> (raw)
In-Reply-To: <1476975876-2522-1-git-send-email-acme@kernel.org>
* 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
next prev parent reply other threads:[~2016-10-22 8:28 UTC|newest]
Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-10-20 15:03 Arnaldo Carvalho de Melo
2016-10-20 15:03 ` [PATCH 01/52] perf c2c: Introduce c2c_decode_stats function Arnaldo Carvalho de Melo
2016-10-20 15:03 ` [PATCH 02/52] perf c2c: Introduce c2c_add_stats function Arnaldo Carvalho de Melo
2016-10-20 15:03 ` [PATCH 03/52] perf c2c: Add c2c command Arnaldo Carvalho de Melo
2016-10-20 15:03 ` [PATCH 04/52] perf c2c: Add record subcommand Arnaldo Carvalho de Melo
2016-10-20 15:03 ` [PATCH 05/52] perf c2c: Add report subcommand Arnaldo Carvalho de Melo
2016-10-20 15:03 ` [PATCH 06/52] perf c2c report: Add dimension support Arnaldo Carvalho de Melo
2016-10-20 15:03 ` [PATCH 07/52] perf c2c report: Add sort_entry " Arnaldo Carvalho de Melo
2016-10-20 15:03 ` [PATCH 08/52] perf c2c report: Fallback to standard dimensions Arnaldo Carvalho de Melo
2016-10-20 15:03 ` [PATCH 09/52] perf c2c report: Add sample processing Arnaldo Carvalho de Melo
2016-10-20 15:03 ` [PATCH 10/52] perf c2c report: Add cacheline hists processing Arnaldo Carvalho de Melo
2016-10-20 15:03 ` [PATCH 11/52] perf c2c report: Decode c2c_stats for hist entries Arnaldo Carvalho de Melo
2016-10-20 15:03 ` [PATCH 12/52] perf c2c report: Add header macros Arnaldo Carvalho de Melo
2016-10-20 15:03 ` [PATCH 13/52] perf c2c report: Add 'dcacheline' dimension key Arnaldo Carvalho de Melo
2016-10-20 15:03 ` [PATCH 14/52] perf c2c report: Add 'offset' " Arnaldo Carvalho de Melo
2016-10-20 15:03 ` [PATCH 15/52] perf c2c report: Add 'iaddr' " Arnaldo Carvalho de Melo
2016-10-20 15:04 ` [PATCH 16/52] perf c2c report: Add hitm related dimension keys Arnaldo Carvalho de Melo
2016-10-20 15:04 ` [PATCH 17/52] perf c2c report: Add stores " Arnaldo Carvalho de Melo
2016-10-20 15:04 ` [PATCH 18/52] perf c2c report: Add loads " Arnaldo Carvalho de Melo
2016-10-20 15:04 ` [PATCH 19/52] perf c2c report: Add llc and remote " Arnaldo Carvalho de Melo
2016-10-20 15:04 ` [PATCH 20/52] perf c2c report: Add llc load miss dimension key Arnaldo Carvalho de Melo
2016-10-20 15:04 ` [PATCH 21/52] perf c2c report: Add total record sort key Arnaldo Carvalho de Melo
2016-10-20 15:04 ` [PATCH 22/52] perf c2c report: Add total loads " Arnaldo Carvalho de Melo
2016-10-20 15:04 ` [PATCH 23/52] perf c2c report: Add hitm percent " Arnaldo Carvalho de Melo
2016-10-20 15:04 ` [PATCH 24/52] perf c2c report: Add hitm/store percent related sort keys Arnaldo Carvalho de Melo
2016-10-20 15:04 ` [PATCH 25/52] perf c2c report: Add dram " Arnaldo Carvalho de Melo
2016-10-20 15:04 ` [PATCH 26/52] perf c2c report: Add 'pid' sort key Arnaldo Carvalho de Melo
2016-10-20 15:04 ` [PATCH 27/52] perf c2c report: Add 'tid' " Arnaldo Carvalho de Melo
2016-10-20 15:04 ` [PATCH 28/52] perf c2c report: Add 'symbol' and 'dso' sort keys Arnaldo Carvalho de Melo
2016-10-20 15:04 ` [PATCH 29/52] perf c2c report: Add 'node' sort key Arnaldo Carvalho de Melo
2016-10-20 15:04 ` [PATCH 30/52] perf c2c report: Add stats related sort keys Arnaldo Carvalho de Melo
2016-10-20 15:04 ` [PATCH 31/52] perf c2c report: Add 'cpucnt' sort key Arnaldo Carvalho de Melo
2016-10-20 15:04 ` [PATCH 32/52] perf c2c report: Add src line " Arnaldo Carvalho de Melo
2016-10-20 15:04 ` [PATCH 33/52] perf c2c report: Setup number of header lines for hists Arnaldo Carvalho de Melo
2016-10-20 15:04 ` [PATCH 34/52] perf c2c report: Set final resort fields Arnaldo Carvalho de Melo
2016-10-20 15:04 ` [PATCH 35/52] perf c2c report: Add stdio output support Arnaldo Carvalho de Melo
2016-10-20 15:04 ` [PATCH 36/52] perf c2c report: Add main TUI browser Arnaldo Carvalho de Melo
2016-10-20 15:04 ` [PATCH 37/52] perf c2c report: Add TUI cacheline browser Arnaldo Carvalho de Melo
2016-10-20 15:04 ` [PATCH 38/52] perf c2c report: Add global stats stdio output Arnaldo Carvalho de Melo
2016-10-20 15:04 ` [PATCH 39/52] perf c2c report: Add shared cachelines " Arnaldo Carvalho de Melo
2016-10-20 15:04 ` [PATCH 40/52] perf c2c report: Add c2c related " Arnaldo Carvalho de Melo
2016-10-20 15:04 ` [PATCH 41/52] perf c2c report: Allow to report callchains Arnaldo Carvalho de Melo
2016-10-20 15:04 ` [PATCH 42/52] perf c2c report: Limit the cachelines table entries Arnaldo Carvalho de Melo
2016-10-20 15:04 ` [PATCH 43/52] perf c2c report: Add support to choose local HITMs Arnaldo Carvalho de Melo
2016-10-20 15:04 ` [PATCH 44/52] perf c2c report: Allow to set cacheline sort fields Arnaldo Carvalho de Melo
2016-10-20 15:04 ` [PATCH 45/52] perf c2c report: Recalc width of global sort entries Arnaldo Carvalho de Melo
2016-10-20 15:04 ` [PATCH 46/52] perf c2c report: Add cacheline index entry Arnaldo Carvalho de Melo
2016-10-20 15:04 ` [PATCH 47/52] perf c2c report: Add support to manage symbol name length Arnaldo Carvalho de Melo
2016-10-20 15:04 ` [PATCH 48/52] perf c2c report: Iterate node display in browser Arnaldo Carvalho de Melo
2016-10-20 15:04 ` [PATCH 49/52] perf c2c report: Add help windows Arnaldo Carvalho de Melo
2016-10-20 15:04 ` [PATCH 50/52] perf c2c: Add man page and credits Arnaldo Carvalho de Melo
2016-10-20 15:04 ` [PATCH 51/52] perf c2c report: Add --no-source option Arnaldo Carvalho de Melo
2016-10-20 15:04 ` [PATCH 52/52] perf c2c report: Add --show-all option Arnaldo Carvalho de Melo
2016-10-20 23:02 ` [GIT PULL 00/52] New Tool: perf c2c Kim Phillips
2016-10-21 0:17 ` [PATCH] perf c2c report: Properly check data presence in rb_tree loop Jiri Olsa
2016-10-21 19:23 ` Kim Phillips
2016-10-22 8:49 ` [tip:perf/core] perf c2c report: Add main TUI browser tip-bot for Jiri Olsa
2016-10-21 0:21 ` [GIT PULL 00/52] New Tool: perf c2c Jiri Olsa
2016-10-22 8:28 ` Ingo Molnar [this message]
2016-10-23 11:05 ` Jiri Olsa
2016-10-23 23:47 ` Andi Kleen
2016-10-24 6:32 ` Jiri Olsa
2016-10-24 9:23 ` Ingo Molnar
2016-10-24 9:42 ` Jiri Olsa
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20161022082806.GA4526@gmail.com \
--to=mingo@kernel.org \
--cc=a.p.zijlstra@chello.nl \
--cc=acme@kernel.org \
--cc=acme@redhat.com \
--cc=andi@firstfloor.org \
--cc=dsahern@gmail.com \
--cc=dzickus@redhat.com \
--cc=jmario@redhat.com \
--cc=jolsa@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lwn@lwn.net \
--cc=namhyung@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome