On 11/01/2022 15:07, Andrew Kilroy wrote:
This patch series adds the ability for the --topdown option to use
metrics (defined in json files in the pmu-events directory) to describe
how to calculate and determine the output columns for topdown level 1.
For this to work, a number of metrics have to be defined for the
relevant processor with the MetricGroup name "TopDownL1". perf will
arrange for the events defined in each metric to be collected, and each
metric will be displayed in the output, as if
perf stat -M 'TopDownL1' --metric-only -- exampleapp
had been used.
Topdown was already implemented where certain kernel events are defined.
If these kernel events are defined, the new json metrics behaviour is
not used. The json metrics approach is only used if the kernel events
are absent.
The last patch in the series disables the json metrics behaviour on x86.
This is because of concerns that due to SMT it's not straightforward to
express the various formulas as json for certain x86 cpus. See
I suppose this solution is ok.
A concern is that today we only have 1x arm64 platform which actually supports this in mainline.
Do you have any more which you plan to support?
I think that it's the frontend bound and fetch_bubble event which doesn't have a standard arm solution.
Note that I do have a series for perf tool which can read arm cpu pmu sysfs events folder to find events which are implemented (I don't think all required events are mandated) and match that against the common arch events JSON, so that we don't need a JSON definition file for each core implementation from all implementators - this would improve scalability.However a concern is that some events - like inst_spec - have imp def meaning, so may not be good to always use by default for all cores metrics.