All of lore.kernel.org
 help / color / mirror / Atom feed
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

  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 [GIT PULL 00/52] New Tool: perf c2c 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 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.