All of lore.kernel.org
 help / color / mirror / Atom feed
* Support standalone metrics and metric groups for perf
@ 2017-07-24 23:40 Andi Kleen
  2017-07-24 23:40 ` [PATCH v1 01/15] perf, tools, stat: Fix buffer overflow while freeing events Andi Kleen
                   ` (15 more replies)
  0 siblings, 16 replies; 36+ messages in thread
From: Andi Kleen @ 2017-07-24 23:40 UTC (permalink / raw)
  To: acme; +Cc: jolsa, linux-kernel

Add generic support for standalone metrics specified in JSON files
to perf stat. A metric is a formula that uses multiple events
to compute a higher level result (e.g. IPC). 

For more complex metrics we need to have micro architecture
specific knowledge, so it makes sense to tie metrics to
JSON event lists.
    
Previously metrics were always tied to an event and automatically
enabled with that event. But now change it that we can have
standalone metrics. They are in the same JSON data structure
as events, but don't have an event name, only a metric name.
    
We also allow to organize the metrics in metric groups, which
allows a short cut to select several related metrics at once.

This patch kit adds the code to perf to manage metric groups

The first few patches are generic bug fixes and can be applied
directly. Then there is a 'weak group' feature that is useful
independently from metrics. After there are metrics specific
patches.

The patches are available in

   git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-misc.git perf/metric-group-4

The actual Intel JSON metrics are available in git as a separate pull
request in 

   git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-misc.git perf/intel-json-metrics-2

Some example output:

   % perf list metricgroup
    ..
    Metric Groups:
    
    DSB:
      DSB_Coverage
            [Fraction of Uops delivered by the DSB (aka Decoded Icache; or Uop Cache)]
    FLOPS:
      GFLOPs
            [Giga Floating Point Operations Per Second]
    Frontend:
      IFetch_Line_Utilization
            [Rough Estimation of fraction of fetched lines bytes that were likely consumed by program instructions]
    Frontend_Bandwidth:
      DSB_Coverage
            [Fraction of Uops delivered by the DSB (aka Decoded Icache; or Uop Cache)]
    Memory_BW:
      MLP
            [Memory-Level-Parallelism (average number of L1 miss demand load when there is at least 1 such miss)]

   % perf stat -M Summary --metric-only -a sleep 1
    
     Performance counter stats for 'system wide':
    
    Instructions                              CLKS                 CPU_Utilization      GFLOPs               SMT_2T_Utilization   Kernel_Utilization
    317614222.0                              1392930775.0             0.0                 0.0                 0.2                 0.1
    
           1.001497549 seconds time elapsed
    
   % perf stat -M GFLOPs flops
    
     Performance counter stats for 'flops':
    
         3,999,541,471      fp_comp_ops_exe.sse_scalar_single #      1.2 GFLOPs                   (66.65%)
                    14      fp_comp_ops_exe.sse_scalar_double                                     (66.65%)
                     0      fp_comp_ops_exe.sse_packed_double                                     (66.67%)
                     0      fp_comp_ops_exe.sse_packed_single                                     (66.70%)
                     0      simd_fp_256.packed_double                                     (66.70%)
                     0      simd_fp_256.packed_single                                     (66.67%)
                     0      duration_time
    
           3.238372845 seconds time elapsed

v1: Initial post

^ permalink raw reply	[flat|nested] 36+ messages in thread
* Support standalone metrics and metric groups for perf
@ 2017-08-31 19:40 Andi Kleen
  2017-09-01 17:26 ` Jiri Olsa
  0 siblings, 1 reply; 36+ messages in thread
From: Andi Kleen @ 2017-08-31 19:40 UTC (permalink / raw)
  To: acme; +Cc: jolsa, linux-kernel

Add generic support for standalone metrics specified in JSON files
to perf stat. A metric is a formula that uses multiple events
to compute a higher level result (e.g. IPC). 

For more complex metrics we need to have micro architecture
specific knowledge, so it makes sense to tie metrics to
JSON event lists.
    
Previously metrics were always tied to an event and automatically
enabled with that event. But now change it that we can have
standalone metrics. They are in the same JSON data structure
as events, but don't have an event name, only a metric name.
    
We also allow to organize the metrics in metric groups, which
allows a short cut to select several related metrics at once.

This patch kit adds the code to perf to manage metric groups

The first few patches are generic bug fixes and can be applied
directly. Then there is a 'weak group' feature that is useful
independently from metrics. After there are metrics specific
patches.

The patches are available in

   git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-misc.git perf/metric-group-6

The actual Intel JSON metrics are available in git as a separate pull
request in 

   git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-misc.git perf/intel-json-metrics-2

Some example output:

   % perf list metricgroup
    ..
    Metric Groups:
    
    DSB:
      DSB_Coverage
            [Fraction of Uops delivered by the DSB (aka Decoded Icache; or Uop Cache)]
    FLOPS:
      GFLOPs
            [Giga Floating Point Operations Per Second]
    Frontend:
      IFetch_Line_Utilization
            [Rough Estimation of fraction of fetched lines bytes that were likely consumed by program instructions]
    Frontend_Bandwidth:
      DSB_Coverage
            [Fraction of Uops delivered by the DSB (aka Decoded Icache; or Uop Cache)]
    Memory_BW:
      MLP
            [Memory-Level-Parallelism (average number of L1 miss demand load when there is at least 1 such miss)]

   % perf stat -M Summary --metric-only -a sleep 1
    
     Performance counter stats for 'system wide':
    
    Instructions                              CLKS                 CPU_Utilization      GFLOPs               SMT_2T_Utilization   Kernel_Utilization
    317614222.0                              1392930775.0             0.0                 0.0                 0.2                 0.1
    
           1.001497549 seconds time elapsed
    
   % perf stat -M GFLOPs flops
    
     Performance counter stats for 'flops':
    
         3,999,541,471      fp_comp_ops_exe.sse_scalar_single #      1.2 GFLOPs                   (66.65%)
                    14      fp_comp_ops_exe.sse_scalar_double                                     (66.65%)
                     0      fp_comp_ops_exe.sse_packed_double                                     (66.67%)
                     0      fp_comp_ops_exe.sse_packed_single                                     (66.70%)
                     0      simd_fp_256.packed_double                                     (66.70%)
                     0      simd_fp_256.packed_single                                     (66.67%)
    
           3.238372845 seconds time elapsed

v1: Initial post
v2: Address all review feedback (see individual patches)
BPF now works again.
Fix some bugs in perf list printing that I added last minute last time.
v3: Address all review feedback. Some patches are split. Rebased.
Not caching cpuids because it's too complicated.

^ permalink raw reply	[flat|nested] 36+ messages in thread

end of thread, other threads:[~2017-09-01 17:50 UTC | newest]

Thread overview: 36+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-07-24 23:40 Support standalone metrics and metric groups for perf Andi Kleen
2017-07-24 23:40 ` [PATCH v1 01/15] perf, tools, stat: Fix buffer overflow while freeing events Andi Kleen
2017-08-01  8:11   ` Jiri Olsa
2017-07-24 23:40 ` [PATCH v1 02/15] perf, tools: Tighten detection of BPF events Andi Kleen
2017-08-02  7:35   ` Jiri Olsa
2017-08-02 19:10     ` Arnaldo Carvalho de Melo
2017-07-24 23:40 ` [PATCH v1 03/15] perf, tools, stat: Fix saved values rbtree lookup Andi Kleen
2017-08-02  7:35   ` Jiri Olsa
2017-08-02 19:11     ` Arnaldo Carvalho de Melo
2017-08-14 17:43   ` [tip:perf/core] perf " tip-bot for Andi Kleen
2017-07-24 23:40 ` [PATCH v1 04/15] perf, tools: Support weak groups Andi Kleen
2017-08-02  7:35   ` Jiri Olsa
2017-07-24 23:40 ` [PATCH v1 05/15] perf, tools: Add missing newline to expr parser error messages Andi Kleen
2017-08-02  7:37   ` Jiri Olsa
2017-08-14 17:44   ` [tip:perf/core] perf " tip-bot for Andi Kleen
2017-07-24 23:40 ` [PATCH v1 06/15] perf, tools: Add utility function to detect SMT status Andi Kleen
2017-07-24 23:40 ` [PATCH v1 07/15] perf, tools: Expression parser enhancements for metrics Andi Kleen
2017-08-07  9:51   ` Jiri Olsa
2017-07-24 23:40 ` [PATCH v1 08/15] perf, tools: Increase maximum number of events in expressions Andi Kleen
2017-07-24 23:40 ` [PATCH v1 09/15] perf, tools: Dedup events in expression parsing Andi Kleen
2017-08-07  9:51   ` Jiri Olsa
2017-07-24 23:40 ` [PATCH v1 10/15] perf, tools: Support metric_group and no event name in json parser Andi Kleen
2017-07-24 23:40 ` [PATCH v1 11/15] perf, tools, stat: Factor out generic metric printing Andi Kleen
2017-07-24 23:40 ` [PATCH v1 12/15] perf, tools, stat: Support JSON metrics in perf stat Andi Kleen
2017-07-24 23:40 ` [PATCH v1 13/15] perf, tools, list: Add metric groups to perf list Andi Kleen
2017-07-24 23:40 ` [PATCH v1 14/15] perf, tools, stat: Don't use ctx for saved values lookup Andi Kleen
2017-07-24 23:40 ` [PATCH v1 15/15] perf, tools: Support duration_time Andi Kleen
2017-08-07 10:36   ` Jiri Olsa
2017-07-26 14:15 ` Support standalone metrics and metric groups for perf Jiri Olsa
2017-07-26 15:38   ` Andi Kleen
2017-07-28  8:48     ` Jiri Olsa
2017-08-31 19:40 Andi Kleen
2017-09-01 17:26 ` Jiri Olsa
2017-09-01 17:36   ` Jiri Olsa
2017-09-01 17:42   ` Andi Kleen
2017-09-01 17:50     ` Jiri Olsa

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.