All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/6] perf arm64 metricgroup support
@ 2021-03-25 10:33 ` John Garry
  0 siblings, 0 replies; 52+ messages in thread
From: John Garry @ 2021-03-25 10:33 UTC (permalink / raw)
  To: will, mathieu.poirier, leo.yan, peterz, mingo, acme,
	mark.rutland, alexander.shishkin, jolsa, namhyung, irogers
  Cc: linuxarm, kjain, kan.liang, linux-kernel, linux-arm-kernel,
	zhangshaokun, pc, John Garry

This series contains support to get basic metricgroups working for
arm64 CPUs.

Initial support is added for HiSilicon hip08 platform.

Some sample usage on Huawei D06 board:

 $ ./perf list metric    

List of pre-defined events (to be used in -e): 

Metrics:     

  bp_misp_flush
       [BP misp flush L3 topdown metric]
  branch_mispredicts
       [Branch mispredicts L2 topdown metric]
  core_bound
       [Core bound L2 topdown metric]
  divider
       [Divider L3 topdown metric]
  exe_ports_util
       [EXE ports util L3 topdown metric]
  fetch_bandwidth_bound
       [Fetch bandwidth bound L2 topdown metric]
  fetch_latency_bound
       [Fetch latency bound L2 topdown metric]
  fsu_stall
       [FSU stall L3 topdown metric]
  idle_by_icache_miss

$ sudo ./perf stat -v -M core_bound sleep 1
Using CPUID 0x00000000480fd010
metric expr (exe_stall_cycle - (mem_stall_anyload + armv8_pmuv3_0@event\=0x7005@)) / cpu_cycles for core_bound
found event cpu_cycles
found event armv8_pmuv3_0/event=0x7005/
found event exe_stall_cycle
found event mem_stall_anyload
adding {cpu_cycles -> armv8_pmuv3_0/event=0x7001/
mem_stall_anyload -> armv8_pmuv3_0/event=0x7004/
Control descriptor is not initialized
cpu_cycles: 989433 385050 385050
armv8_pmuv3_0/event=0x7005/: 19207 385050 385050
exe_stall_cycle: 900825 385050 385050
mem_stall_anyload: 253516 385050 385050

Performance counter stats for 'sleep':

989,433      cpu_cycles      #     0.63 core_bound
  19,207      armv8_pmuv3_0/event=0x7005/
 900,825      exe_stall_cycle
 253,516      mem_stall_anyload

       0.000805809 seconds time elapsed

       0.000875000 seconds user
       0.000000000 seconds sys
       
perf stat --topdown is not supported, as this requires the CPU PMU to
expose (alias) events for the TopDown L1 metrics from sysfs, which arm 
does not do. To get that to work, we probably need to make perf use the
pmu-events cpumap to learn about those alias events.

Metric reuse support is added for pmu-events parse metric testcase.
This had been broken on power9 recentlty:
https://lore.kernel.org/lkml/20210324015418.GC8931@li-24c3614c-2adc-11b2-a85c-85f334518bdb.ibm.com/ 

Differences to v1:
- Add pmu_events_map__find() as arm64-specific function
- Fix metric reuse for pmu-events parse metric testcase 

John Garry (6):
  perf metricgroup: Make find_metric() public with name change
  perf test: Handle metric reuse in pmu-events parsing test
  perf pmu: Add pmu_events_map__find()
  perf vendor events arm64: Add Hisi hip08 L1 metrics
  perf vendor events arm64: Add Hisi hip08 L2 metrics
  perf vendor events arm64: Add Hisi hip08 L3 metrics

 tools/perf/arch/arm64/util/Build              |   1 +
 tools/perf/arch/arm64/util/pmu.c              |  25 ++
 .../arch/arm64/hisilicon/hip08/metrics.json   | 233 ++++++++++++++++++
 tools/perf/tests/pmu-events.c                 |  82 +++++-
 tools/perf/util/metricgroup.c                 |  12 +-
 tools/perf/util/metricgroup.h                 |   3 +-
 tools/perf/util/pmu.c                         |   5 +
 tools/perf/util/pmu.h                         |   1 +
 tools/perf/util/s390-sample-raw.c             |   4 +-
 9 files changed, 355 insertions(+), 11 deletions(-)
 create mode 100644 tools/perf/arch/arm64/util/pmu.c
 create mode 100644 tools/perf/pmu-events/arch/arm64/hisilicon/hip08/metrics.json

-- 
2.26.2


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

end of thread, other threads:[~2021-04-07  6:06 UTC | newest]

Thread overview: 52+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-25 10:33 [PATCH v2 0/6] perf arm64 metricgroup support John Garry
2021-03-25 10:33 ` John Garry
2021-03-25 10:33 ` [PATCH v2 1/6] perf metricgroup: Make find_metric() public with name change John Garry
2021-03-25 10:33   ` John Garry
2021-04-01 23:16   ` Ian Rogers
2021-04-01 23:16     ` Ian Rogers
2021-04-06  9:54     ` John Garry
2021-04-06  9:54       ` John Garry
2021-04-07  5:39       ` kajoljain
2021-04-07  5:39         ` kajoljain
2021-03-25 10:33 ` [PATCH v2 2/6] perf test: Handle metric reuse in pmu-events parsing test John Garry
2021-03-25 10:33   ` John Garry
2021-04-01 13:49   ` Jiri Olsa
2021-04-01 13:49     ` Jiri Olsa
2021-04-06 11:00     ` John Garry
2021-04-06 11:00       ` John Garry
2021-04-06 12:17       ` Jiri Olsa
2021-04-06 12:17         ` Jiri Olsa
2021-04-06 12:43         ` John Garry
2021-04-06 12:43           ` John Garry
2021-04-06 12:55           ` Jiri Olsa
2021-04-06 12:55             ` Jiri Olsa
2021-04-06 13:21             ` John Garry
2021-04-06 13:21               ` John Garry
2021-04-06 13:34               ` Jiri Olsa
2021-04-06 13:34                 ` Jiri Olsa
2021-04-06 13:38                 ` John Garry
2021-04-06 13:38                   ` John Garry
2021-03-25 10:33 ` [PATCH v2 3/6] perf pmu: Add pmu_events_map__find() John Garry
2021-03-25 10:33   ` John Garry
2021-03-25 10:33 ` [PATCH v2 4/6] perf vendor events arm64: Add Hisi hip08 L1 metrics John Garry
2021-03-25 10:33   ` John Garry
2021-03-25 10:33 ` [PATCH v2 5/6] perf vendor events arm64: Add Hisi hip08 L2 metrics John Garry
2021-03-25 10:33   ` John Garry
2021-03-25 10:33 ` [PATCH v2 6/6] perf vendor events arm64: Add Hisi hip08 L3 metrics John Garry
2021-03-25 10:33   ` John Garry
2021-03-25 20:39 ` [PATCH v2 0/6] perf arm64 metricgroup support Paul A. Clarke
2021-03-25 20:39   ` Paul A. Clarke
2021-03-26 10:57   ` John Garry
2021-03-26 10:57     ` John Garry
2021-03-26 13:13     ` Paul A. Clarke
2021-03-26 13:13       ` Paul A. Clarke
2021-03-29 21:07     ` Paul A. Clarke
2021-03-29 21:07       ` Paul A. Clarke
2021-03-30  6:41       ` kajoljain
2021-03-30  6:41         ` kajoljain
2021-04-06 11:02         ` John Garry
2021-04-06 11:02           ` John Garry
2021-04-06 12:18           ` Paul A. Clarke
2021-04-06 12:18             ` Paul A. Clarke
2021-04-07  6:03 ` kajoljain
2021-04-07  6:03   ` kajoljain

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.