perf shell completion: Support completion of metrics/metricgroups
authorIan Rogers <irogers@google.com>
Tue, 5 Sep 2023 18:15:54 +0000 (11:15 -0700)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Mon, 11 Sep 2023 13:26:36 +0000 (10:26 -0300)
Allow metrics to expand for -M or --metrics options.

Committer testing:

  # grep -m1 'model name' /proc/cpuinfo
  model name : AMD Ryzen 9 5950X 16-Core Processor
  #

Before:

  Just expansion of files/directories in the pwd are expanded:

  # . tools/perf/perf-completion.sh
  # perf stat -M b
  block/ build/
  # perf stat -M b

After:

  # . tools/perf/perf-completion.sh
  # perf stat -M
  all_l2_cache_accesses  all_remote_links_outbound   data_fabric          l1_itlb_misses                  l2_cache_misses_from_l2_hwpf  macro_ops_dispatched       tlb
  all_l2_cache_hits      branch_misprediction_ratio  decoder              l2_cache                        l3_cache                      nps1_die_to_dram
  all_l2_cache_misses    branch_prediction           ic_fetch_miss_ratio  l2_cache_accesses_from_l2_hwpf  l3_read_miss_latency          op_cache_fetch_miss_ratio
  # perf stat -M branch_
  branch_misprediction_ratio  branch_prediction
  # perf stat -M branch_prediction -a sleep 1

   Performance counter stats for 'system wide':

       115,079,765      ex_ret_brn                       #      4.0 %  branch_misprediction_ratio
         4,561,456      ex_ret_brn_misp

       1.015925106 seconds time elapsed

  #

Suggested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Ian Rogers <irogers@google.com>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Acked-by: Namhyung Kim <namhyung@kernel.org>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: https://lore.kernel.org/r/20230905181554.3202873-3-irogers@google.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/perf-completion.sh

index 319ad724b97aa57e9847719ef6c4ee6e0f953b04..f224d79b89e69f13cd83221d57f12ee11f252c76 100644 (file)
@@ -202,6 +202,10 @@ __perf_main ()
                $prev_skip_opts == @(record|stat|top) ]]; then
                local evts=$($cmd list --raw-dump pfm)
                __perfcomp "$evts" "$cur"
+       elif [[ $prev == @("-M"|"--metrics") &&
+               $prev_skip_opts == @(stat) ]]; then
+               local metrics=$($cmd list --raw-dump metric metricgroup)
+               __perfcomp "$metrics" "$cur"
        else
                # List subcommands for perf commands
                if [[ $prev_skip_opts == @(kvm|kmem|mem|lock|sched|