perf top: Support --group-sort-idx to change the sort order
authorJin Yao <yao.jin@linux.intel.com>
Tue, 24 Mar 2020 22:07:10 +0000 (06:07 +0800)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Fri, 3 Apr 2020 12:37:55 +0000 (09:37 -0300)
'perf report' supports the option --group-sort-idx, which sorts the
output by the event at the index n in event group.

For example:

  perf record -e cycles,instructions,cache-misses
  perf report --group --group-sort-idx 2 --stdio

The perf-report output is sorted by cache-misses.

This patch supports --group-sort-idx in perf-top.

For example:

  perf top --group -e cycles,instructions,cache-misses --group-sort-idx 2

The perf-top output is sorted by cache-misses.

Signed-off-by: Jin Yao <yao.jin@linux.intel.com>
Suggested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Jin Yao <yao.jin@intel.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lore.kernel.org/lkml/20200324220711.6025-1-yao.jin@linux.intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/Documentation/perf-top.txt
tools/perf/builtin-top.c

index ddab103af8c7cb55d42c34b2c7c19a1bceb512be..487737a725e97c56ad580f5edacf52f2c5a4c90c 100644 (file)
@@ -53,6 +53,11 @@ Default is to monitor all CPUS.
 --group::
         Put the counters into a counter group.
 
+--group-sort-idx::
+       Sort the output by the event at the index n in group. If n is invalid,
+       sort by the first event. It can support multiple groups with different
+       amount of events. WARNING: This should be used on grouped events.
+
 -F <freq>::
 --freq=<freq>::
        Profile at this frequency. Use 'max' to use the currently maximum
index 02ea2cf2a3d9cd27bf59444b0c1e2a8a031a95c9..9ff7943d2014be2382ae7b0b59e230bc9fbb99bf 100644 (file)
@@ -1560,6 +1560,10 @@ int cmd_top(int argc, const char **argv)
                    "Record namespaces events"),
        OPT_BOOLEAN(0, "all-cgroups", &opts->record_cgroup,
                    "Record cgroup events"),
+       OPT_INTEGER(0, "group-sort-idx", &symbol_conf.group_sort_idx,
+                   "Sort the output by the event at the index n in group. "
+                   "If n is invalid, sort by the first event. "
+                   "WARNING: should be used on grouped events."),
        OPTS_EVSWITCH(&top.evswitch),
        OPT_END()
        };