diff options
| -rw-r--r-- | tools/perf/Documentation/perf-report.txt | 3 | ||||
| -rw-r--r-- | tools/perf/builtin-report.c | 18 |
2 files changed, 21 insertions, 0 deletions
diff --git a/tools/perf/Documentation/perf-report.txt b/tools/perf/Documentation/perf-report.txt index 05774dfbd14f..e72e93110782 100644 --- a/tools/perf/Documentation/perf-report.txt +++ b/tools/perf/Documentation/perf-report.txt | |||
| @@ -24,6 +24,9 @@ OPTIONS | |||
| 24 | --dsos=:: | 24 | --dsos=:: |
| 25 | Only consider symbols in these dsos. CSV that understands | 25 | Only consider symbols in these dsos. CSV that understands |
| 26 | file://filename entries. | 26 | file://filename entries. |
| 27 | -n | ||
| 28 | --show-nr-samples | ||
| 29 | Show the number of samples for each symbol | ||
| 27 | -C:: | 30 | -C:: |
| 28 | --comms=:: | 31 | --comms=:: |
| 29 | Only consider symbols in these comms. CSV that understands | 32 | Only consider symbols in these comms. CSV that understands |
diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c index f3422121d858..430a195b8589 100644 --- a/tools/perf/builtin-report.c +++ b/tools/perf/builtin-report.c | |||
| @@ -51,6 +51,7 @@ static int verbose; | |||
| 51 | static int modules; | 51 | static int modules; |
| 52 | 52 | ||
| 53 | static int full_paths; | 53 | static int full_paths; |
| 54 | static int show_nr_samples; | ||
| 54 | 55 | ||
| 55 | static unsigned long page_size; | 56 | static unsigned long page_size; |
| 56 | static unsigned long mmap_window = 32; | 57 | static unsigned long mmap_window = 32; |
| @@ -1024,6 +1025,13 @@ hist_entry__fprintf(FILE *fp, struct hist_entry *self, u64 total_samples) | |||
| 1024 | else | 1025 | else |
| 1025 | ret = fprintf(fp, field_sep ? "%lld" : "%12lld ", self->count); | 1026 | ret = fprintf(fp, field_sep ? "%lld" : "%12lld ", self->count); |
| 1026 | 1027 | ||
| 1028 | if (show_nr_samples) { | ||
| 1029 | if (field_sep) | ||
| 1030 | fprintf(fp, "%c%lld", *field_sep, self->count); | ||
| 1031 | else | ||
| 1032 | fprintf(fp, "%11lld", self->count); | ||
| 1033 | } | ||
| 1034 | |||
| 1027 | list_for_each_entry(se, &hist_entry__sort_list, list) { | 1035 | list_for_each_entry(se, &hist_entry__sort_list, list) { |
| 1028 | if (se->elide) | 1036 | if (se->elide) |
| 1029 | continue; | 1037 | continue; |
| @@ -1361,6 +1369,12 @@ static size_t output__fprintf(FILE *fp, u64 total_samples) | |||
| 1361 | fprintf(fp, "#\n"); | 1369 | fprintf(fp, "#\n"); |
| 1362 | 1370 | ||
| 1363 | fprintf(fp, "# Overhead"); | 1371 | fprintf(fp, "# Overhead"); |
| 1372 | if (show_nr_samples) { | ||
| 1373 | if (field_sep) | ||
| 1374 | fprintf(fp, "%cSamples", *field_sep); | ||
| 1375 | else | ||
| 1376 | fputs(" Samples ", fp); | ||
| 1377 | } | ||
| 1364 | list_for_each_entry(se, &hist_entry__sort_list, list) { | 1378 | list_for_each_entry(se, &hist_entry__sort_list, list) { |
| 1365 | if (se->elide) | 1379 | if (se->elide) |
| 1366 | continue; | 1380 | continue; |
| @@ -1388,6 +1402,8 @@ static size_t output__fprintf(FILE *fp, u64 total_samples) | |||
| 1388 | goto print_entries; | 1402 | goto print_entries; |
| 1389 | 1403 | ||
| 1390 | fprintf(fp, "# ........"); | 1404 | fprintf(fp, "# ........"); |
| 1405 | if (show_nr_samples) | ||
| 1406 | fprintf(fp, " .........."); | ||
| 1391 | list_for_each_entry(se, &hist_entry__sort_list, list) { | 1407 | list_for_each_entry(se, &hist_entry__sort_list, list) { |
| 1392 | unsigned int i; | 1408 | unsigned int i; |
| 1393 | 1409 | ||
| @@ -1979,6 +1995,8 @@ static const struct option options[] = { | |||
| 1979 | OPT_STRING('k', "vmlinux", &vmlinux, "file", "vmlinux pathname"), | 1995 | OPT_STRING('k', "vmlinux", &vmlinux, "file", "vmlinux pathname"), |
| 1980 | OPT_BOOLEAN('m', "modules", &modules, | 1996 | OPT_BOOLEAN('m', "modules", &modules, |
| 1981 | "load module symbols - WARNING: use only with -k and LIVE kernel"), | 1997 | "load module symbols - WARNING: use only with -k and LIVE kernel"), |
| 1998 | OPT_BOOLEAN('n', "show-nr-samples", &show_nr_samples, | ||
| 1999 | "Show a column with the number of samples"), | ||
| 1982 | OPT_STRING('s', "sort", &sort_order, "key[,key2...]", | 2000 | OPT_STRING('s', "sort", &sort_order, "key[,key2...]", |
| 1983 | "sort by key(s): pid, comm, dso, symbol, parent"), | 2001 | "sort by key(s): pid, comm, dso, symbol, parent"), |
| 1984 | OPT_BOOLEAN('P', "full-paths", &full_paths, | 2002 | OPT_BOOLEAN('P', "full-paths", &full_paths, |
