Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

perf report: Print percentage of each event statistics

It's sometimes useful to see how many samples vs other events in the
data file with percent values.

$ perf report --stat

Aggregated stats:
TOTAL events: 20064
MMAP events: 239 ( 1.2%)
COMM events: 1518 ( 7.6%)
EXIT events: 1 ( 0.0%)
FORK events: 1517 ( 7.6%)
SAMPLE events: 4015 (20.0%)
MMAP2 events: 12769 (63.6%)
FINISHED_ROUND events: 2 ( 0.0%)
THREAD_MAP events: 1 ( 0.0%)
CPU_MAP events: 1 ( 0.0%)
TIME_CONV events: 1 ( 0.0%)
cycles stats:
SAMPLE events: 2475
instructions stats:
SAMPLE events: 1540

Suggested-by: Andi Kleen <ak@linux.intel.com>
Reviewed-by: Andi Kleen <ak@linux.intel.com>
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Acked-by: Jiri Olsa <jolsa@redhat.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Ian Rogers <irogers@google.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: https://lore.kernel.org/r/20210427013717.1651674-7-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

authored by

Namhyung Kim and committed by
Arnaldo Carvalho de Melo
462f57db 8f08cf33

+9 -1
+9 -1
tools/perf/ui/stdio/hist.c
··· 902 902 { 903 903 int i; 904 904 size_t ret = 0; 905 + u32 total = stats->nr_events[0]; 905 906 906 907 for (i = 0; i < PERF_RECORD_HEADER_MAX; ++i) { 907 908 const char *name; ··· 913 912 if (skip_empty && !stats->nr_events[i]) 914 913 continue; 915 914 916 - ret += fprintf(fp, "%16s events: %10d\n", name, stats->nr_events[i]); 915 + if (i && total) { 916 + ret += fprintf(fp, "%16s events: %10d (%4.1f%%)\n", 917 + name, stats->nr_events[i], 918 + 100.0 * stats->nr_events[i] / total); 919 + } else { 920 + ret += fprintf(fp, "%16s events: %10d\n", 921 + name, stats->nr_events[i]); 922 + } 917 923 } 918 924 919 925 return ret;