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


Groups > linux.kernel > #1293739

Re: Add top down metrics to perf stat v2

From Stephane Eranian <eranian@google.com>
Newsgroups linux.kernel
Subject Re: Add top down metrics to perf stat v2
Date 2015-12-17 11:30 +0100
Message-ID <qGDYR-6sp-1@gated-at.bofh.it> (permalink)
References <qG8BH-3aD-1@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


Andi,

On Tue, Dec 15, 2015 at 4:54 PM, Andi Kleen <andi@firstfloor.org> wrote:
> Note to reviewers: includes both tools and kernel patches.
> The kernel patches are at the end.
>
> This patchkit adds support for TopDown measurements to perf stat
> It applies on top of my earlier metrics patchkit, posted
> separately, and the --metric-only patchkit (also
> posted separately)
>
> TopDown is intended to replace the frontend cycles idle/
> backend cycles idle metrics in standard perf stat output.
> These metrics are not reliable in many workloads,
> due to out of order effects.
>
> This implements a new --topdown mode in perf stat
> (similar to --transaction) that measures the pipe line
> bottlenecks using standardized formulas. The measurement
> can be all done with 5 counters (one fixed counter)
>
> The result are four metrics:
> FrontendBound, BackendBound, BadSpeculation, Retiring
>
> that describe the CPU pipeline behavior on a high level.
>
> FrontendBound and BackendBound
> BadSpeculation is a higher
>
> The full top down methology has many hierarchical metrics.
> This implementation only supports level 1 which can be
> collected without multiplexing. A full implementation
> of top down on top of perf is available in pmu-tools toplev.
> (http://github.com/andikleen/pmu-tools)
>
> The current version works on Intel Core CPUs starting
> with Sandy Bridge, and Atom CPUs starting with Silvermont.
> In principle the generic metrics should be also implementable
> on other out of order CPUs.
>
> TopDown level 1 uses a set of abstracted metrics which
> are generic to out of order CPU cores (although some
> CPUs may not implement all of them):
>
> topdown-total-slots   Available slots in the pipeline
> topdown-slots-issued          Slots issued into the pipeline
> topdown-slots-retired         Slots successfully retired
> topdown-fetch-bubbles         Pipeline gaps in the frontend
> topdown-recovery-bubbles  Pipeline gaps during recovery
>                           from misspeculation
>
> These metrics then allow to compute four useful metrics:
> FrontendBound, BackendBound, Retiring, BadSpeculation.
>
> The formulas to compute the metrics are generic, they
> only change based on the availability on the abstracted
> input values.
>
> The kernel declares the events supported by the current
> CPU and perf stat then computes the formulas based on the
> available metrics.
>
>
> Example output:
>
> $ ./perf stat --topdown -a ./BC1s
>
>  Performance counter stats for 'system wide':
>
> S0-C0           2           19650790      topdown-total-slots                                           (100.00%)
> S0-C0           2         4445680.00      topdown-fetch-bubbles     #    22.62% frontend bound          (100.00%)
> S0-C0           2         1743552.00      topdown-slots-retired                                         (100.00%)
> S0-C0           2             622954      topdown-recovery-bubbles                                      (100.00%)
> S0-C0           2         2025498.00      topdown-slots-issued      #    63.90% backend bound
> S0-C1           2        16685216540      topdown-total-slots                                           (100.00%)
> S0-C1           2       962557931.00      topdown-fetch-bubbles                                         (100.00%)
> S0-C1           2      4175583320.00      topdown-slots-retired                                         (100.00%)
> S0-C1           2         1743329246      topdown-recovery-bubbles  #    22.22% bad speculation         (100.00%)
> S0-C1           2      6138901193.50      topdown-slots-issued      #    46.99% backend bound
>
I don't see how this output could be very useful. What matters is the
percentage in the comments
and not so much the raw counts because what is the unit? Same remark
holds for the percentage.
I think you need to explain or show that this is % of issue slots and
not cycles.

>        1.535832673 seconds time elapsed
>
> $ perf stat --topdown --topdown --metric-only -I 100 ./BC1s

When I tried from your git tree the --metric-only option was not recognized.

>      0.100576098 frontend bound           retiring                 bad speculation          backend bound
>      0.100576098     8.83%                  48.93%                  35.24%                   7.00%
>      0.200800845     8.84%                  48.49%                  35.53%                   7.13%
>      0.300905983     8.73%                  48.64%                  35.58%                   7.05%
> ...
>
This kind of output is more meaningful and clearer for end-users based
on my experience
and you'd like it per-core possibly.

>
>
> On Hyper Threaded CPUs Top Down computes metrics per core instead of per logical CPU.
> In this case perf stat automatically enables --per-core mode and also requires
> global mode (-a) and avoiding other filters (no cgroup mode)
>
> One side effect is that this may require root rights or a
> kernel.perf_event_paranoid=-1 setting.
>
> On systems without Hyper Threading it can be used per process.
>
> Full tree available in
> git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-misc perf/top-down-11

That is in the top-down-2 branch instead, I think.

>
> No changelog against previous version. There were lots of changes.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

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


Thread

Add top down metrics to perf stat v2 Andi Kleen <andi@firstfloor.org> - 2015-12-16 02:00 +0100
  [PATCH 07/10] perf, tools, stat: Add extra output of counter values with -v Andi Kleen <andi@firstfloor.org> - 2015-12-16 02:00 +0100
  [PATCH 10/10] x86, perf: Add Top Down events to Intel Atom Andi Kleen <andi@firstfloor.org> - 2015-12-16 02:00 +0100
  [PATCH 04/10] perf, tools, stat: Scale values by unit before metrics Andi Kleen <andi@firstfloor.org> - 2015-12-16 02:00 +0100
  [PATCH 09/10] x86, perf: Add Top Down events to Intel Core Andi Kleen <andi@firstfloor.org> - 2015-12-16 02:00 +0100
  [PATCH 03/10] perf, tools, stat: Avoid fractional digits for integer scales Andi Kleen <andi@firstfloor.org> - 2015-12-16 02:00 +0100
    Re: [PATCH 03/10] perf, tools, stat: Avoid fractional digits for  integer scales Stephane Eranian <eranian@google.com> - 2015-12-16 15:30 +0100
  [PATCH 05/10] perf, tools, stat: Basic support for TopDown in perf stat Andi Kleen <andi@firstfloor.org> - 2015-12-16 02:00 +0100
    Re: [PATCH 05/10] perf, tools, stat: Basic support for TopDown in  perf stat Stephane Eranian <eranian@google.com> - 2015-12-16 15:40 +0100
      Re: [PATCH 05/10] perf, tools, stat: Basic support for TopDown in  perf stat Andi Kleen <andi@firstfloor.org> - 2015-12-16 22:30 +0100
        Re: [PATCH 05/10] perf, tools, stat: Basic support for TopDown in  perf stat Stephane Eranian <eranian@google.com> - 2015-12-17 10:30 +0100
          Re: [PATCH 05/10] perf, tools, stat: Basic support for TopDown in  perf stat Andi Kleen <andi@firstfloor.org> - 2015-12-17 15:10 +0100
  [PATCH 08/10] x86, perf: Support sysfs files depending on SMT status Andi Kleen <andi@firstfloor.org> - 2015-12-16 02:00 +0100
    Re: [PATCH 08/10] x86, perf: Support sysfs files depending on SMT  status Peter Zijlstra <peterz@infradead.org> - 2015-12-16 10:00 +0100
    Re: [PATCH 08/10] x86, perf: Support sysfs files depending on SMT status Stephane Eranian <eranian@google.com> - 2015-12-16 13:50 +0100
      Re: [PATCH 08/10] x86, perf: Support sysfs files depending on SMT  status Andi Kleen <andi@firstfloor.org> - 2015-12-16 17:30 +0100
  [PATCH 01/10] perf, tools: Dont stop PMU parsing on alias parse error Andi Kleen <andi@firstfloor.org> - 2015-12-16 02:00 +0100
    Re: [PATCH 01/10] perf, tools: Dont stop PMU parsing on alias parse  error Jiri Olsa <jolsa@redhat.com> - 2015-12-21 17:10 +0100
  [PATCH 02/10] perf, tools, stat: Force --per-core mode for .agg-per-core aliases Andi Kleen <andi@firstfloor.org> - 2015-12-16 02:00 +0100
    Re: [PATCH 02/10] perf, tools, stat: Force --per-core mode for  .agg-per-core aliases Stephane Eranian <eranian@google.com> - 2015-12-16 15:20 +0100
    Re: [PATCH 02/10] perf, tools, stat: Force --per-core mode for  .agg-per-core aliases Jiri Olsa <jolsa@redhat.com> - 2015-12-21 17:20 +0100
    Re: [PATCH 02/10] perf, tools, stat: Force --per-core mode for  .agg-per-core aliases Jiri Olsa <jolsa@redhat.com> - 2015-12-21 17:20 +0100
  [PATCH 06/10] perf, tools, stat: Add computation of TopDown formulas Andi Kleen <andi@firstfloor.org> - 2015-12-16 02:00 +0100
  Re: Add top down metrics to perf stat v2 Stephane Eranian <eranian@google.com> - 2015-12-17 11:30 +0100
    Re: Add top down metrics to perf stat v2 Andi Kleen <andi@firstfloor.org> - 2015-12-17 15:10 +0100
      Re: Add top down metrics to perf stat v2 Stephane Eranian <eranian@google.com> - 2015-12-18 00:40 +0100
        Re: Add top down metrics to perf stat v2 Andi Kleen <andi@firstfloor.org> - 2015-12-18 03:00 +0100
          Re: Add top down metrics to perf stat v2 Stephane Eranian <eranian@google.com> - 2015-12-18 10:40 +0100
            Re: Add top down metrics to perf stat v2 Andi Kleen <andi@firstfloor.org> - 2015-12-18 22:40 +0100

csiph-web