Re: [PATCH v3 0/6] perf arm64 metricgroup support
From: Jiri Olsa
Date: Thu Apr 08 2021 - 08:06:51 EST
On Wed, Apr 07, 2021 at 06:32:44PM +0800, John Garry wrote:
> 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 recently:
> https://lore.kernel.org/lkml/20210324015418.GC8931@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/
>
> Differences to v2:
> - Add TB and RB tags (Thanks!)
> - Rename metricgroup__find_metric() from metricgroup_find_metric()
> - Change resolve_metric_simple() to rescan after any insert
Acked-by: Jiri Olsa <jolsa@xxxxxxxxxx>
thanks,
jirka