Re: [PATCH v2 0/9] jevents/pmu-events improvements
From: Ian Rogers <irogers@google.com>
Date: 2023-01-24 05:04:24
Also in:
linux-arm-kernel, linux-perf-users, lkml
On Mon, Jan 23, 2023 at 5:26 AM John Garry [off-list ref] wrote:
On 21/12/2022 22:34, Ian Rogers wrote:quoted
Add an optimization to jevents using the metric code, rewrite metrics in terms of each other in order to minimize size and improve readability. For example, on Power8 other_stall_cpi is rewritten from: "PM_CMPLU_STALL / PM_RUN_INST_CMPL - PM_CMPLU_STALL_BRU_CRU / PM_RUN_INST_CMPL - PM_CMPLU_STALL_FXU / PM_RUN_INST_CMPL - PM_CMPLU_STALL_VSU / PM_RUN_INST_CMPL - PM_CMPLU_STALL_LSU / PM_RUN_INST_CMPL - PM_CMPLU_STALL_NTCG_FLUSH / PM_RUN_INST_CMPL - PM_CMPLU_STALL_NO_NTF / PM_RUN_INST_CMPL" to: "stall_cpi - bru_cru_stall_cpi - fxu_stall_cpi - vsu_stall_cpi - lsu_stall_cpi - ntcg_flush_cpi - no_ntf_stall_cpi" Which more closely matches the definition on Power9. A limitation of the substitutions are that they depend on strict equality and the shape of the tree. This means that for "a + b + c" then a substitution of "a + b" will succeed while "b + c" will fail (the LHS for "+ c" is "a + b" not just "b"). Separate out the events and metrics in the pmu-events tables saving 14.8% in the table size while making it that metrics no longer need to iterate over all events and vice versa. These changes remove evsel's direct metric support as the pmu_event no longer has a metric to populate it. This is a minor issue as the code wasn't working properly, metrics for this are rare and can still be properly ran using '-M'. Add an ability to just build certain models into the jevents generated pmu-metrics.c code. This functionality is appropriate for operating systems like ChromeOS, that aim to minimize binary size and know all the target CPU models.From a glance, this does not look like it would work for arm64. As I see in the code, we check the model in the arch folder for the test to see if built. For arm64, as it uses arch/implementator/model folder org, and not just arch/model (like x86) So on the assumption that it does not work for arm64 (or just any arch which uses arch/implementator/model folder org), it would be nice to have that feature also. Or maybe also support not just specifying model but also implementator.
Hmm.. this is tricky as x86 isn't following the implementor pattern. I will tweak the comment for the ARM64 case where --model will select an implementor.
quoted
v2. Rebase. Modify the code that skips rewriting a metric with the same name with itself, to make the name check case insensitive.Unfortunately you might need another rebase as this does not apply to acme perf/core (if that is what you want), now for me at: 5670ebf54bd2 (HEAD, origin/tmp.perf/core, origin/perf/core, perf/core) perf cs-etm: Ensure that Coresight timestamps don't go backwards
Will do, thanks! Ian
quoted
Ian Rogers (9): perf jevents metric: Correct Function equality perf jevents metric: Add ability to rewrite metrics in terms of others perf jevents: Rewrite metrics in the same file with each other perf pmu-events: Separate metric out of pmu_event perf stat: Remove evsel metric_name/expr perf jevents: Combine table prefix and suffix writing perf pmu-events: Introduce pmu_metrics_table perf jevents: Generate metrics and events as separate tables perf jevents: Add model list optionThanks, John