perf evlist: Be more specific on -F/–freq

This change “perf evlist: Be more specific on -F/–freq” in Linux kernel is authored by Namhyung Kim <namhyung [at]> on Sun Aug 9 15:45:24 2015 +0900.

perf evlist: Be more specific on -F/--freq

Currently perf evlist -F shows the number as if it's always sampling
frequency.  But we now support per-event freq/period settings.  So it'd
better to show more detailed info whether it's freq or period.

  $ perf record -e 'cpu/config=1/,cpu/config=2,period=300000/' sleep 1
  [ perf record: Woken up 1 times to write data ]
  [ perf record: Captured and wrote 0.017 MB ]

  $ perf evlist -F
  cpu/config=1/: sample_freq=4000
  cpu/config=2,period=300000/: sample_period=300000

Signed-off-by: Namhyung Kim <>
Acked-by: Jiri Olsa <>
Tested-by: Arnaldo Carvalho de Melo <>
Cc: David Ahern <>
Cc: Peter Zijlstra <>
Signed-off-by: Arnaldo Carvalho de Melo <>

This Linux change may have been applied to various maintained Linux releases and you can find Linux releases including commit 4605bb5.

There are 9 lines of Linux source code added/deleted in this change. Code changes to Linux kernel are as follows.

 tools/perf/util/evsel.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c
index f664a22..04fdddd 100644
--- a/tools/perf/util/evsel.c
+++ b/tools/perf/util/evsel.c
@@ -2158,8 +2158,13 @@ int perf_evsel__fprintf(struct perf_evsel *evsel,
 		printed += perf_event_attr__fprintf(fp, &evsel->attr,
 						    __print_attr__fprintf, &first);
 	} else if (details->freq) {
-		printed += comma_fprintf(fp, &first, " sample_freq=%" PRIu64,
-					 (u64)evsel->attr.sample_freq);
+		const char *term = "sample_freq";
+		if (!evsel->attr.freq)
+			term = "sample_period";
+		printed += comma_fprintf(fp, &first, " %s=%" PRIu64,
+					 term, (u64)evsel->attr.sample_freq);
 	fputc('n', fp);

The commit for this change in Linux stable tree is 4605bb5 (patch).

Leave a Reply

Your email address will not be published. Required fields are marked *