Currently perf report only shows a help message "For a higher level overview, try: perf report --sort comm,dso" unconditionally (even if the sort keys were used). Add more help tips and show randomly.
Signed-off-by: Namhyung Kim <namhy...@kernel.org> --- tools/perf/builtin-report.c | 2 +- tools/perf/perf.c | 4 ++++ tools/perf/util/util.c | 22 ++++++++++++++++++++++ tools/perf/util/util.h | 2 ++ 4 files changed, 29 insertions(+), 1 deletion(-) diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c index f10c663af996..c9cc15431a0f 100644 --- a/tools/perf/builtin-report.c +++ b/tools/perf/builtin-report.c @@ -433,7 +433,7 @@ static int report__browse_hists(struct report *rep) int ret; struct perf_session *session = rep->session; struct perf_evlist *evlist = session->evlist; - const char *help = "For a higher level overview, try: perf report --sort comm,dso"; + const char *help = perf_report_tip(); switch (use_browser) { case 1: diff --git a/tools/perf/perf.c b/tools/perf/perf.c index cb1d2499c45c..a929618b8eb6 100644 --- a/tools/perf/perf.c +++ b/tools/perf/perf.c @@ -19,6 +19,8 @@ #include "util/debug.h" #include <api/fs/tracing_path.h> #include <pthread.h> +#include <stdlib.h> +#include <time.h> const char perf_usage_string[] = "perf [--version] [--help] [OPTIONS] COMMAND [ARGS]"; @@ -542,6 +544,8 @@ int main(int argc, const char **argv) if (!cmd) cmd = "perf-help"; + srandom(time(NULL)); + /* get debugfs/tracefs mount point from /proc/mounts */ tracing_path_mount(); diff --git a/tools/perf/util/util.c b/tools/perf/util/util.c index aff0cfd83662..09c6d6cb932b 100644 --- a/tools/perf/util/util.c +++ b/tools/perf/util/util.c @@ -663,3 +663,25 @@ fetch_kernel_version(unsigned int *puint, char *str, *puint = (version << 16) + (patchlevel << 8) + sublevel; return 0; } + +const char *perf_report_tip(void) +{ + const char *tips[] = { + "For a higher level overview, try: perf report --sort comm,dso", + "Group related events with: perf record -e '{cycles,instructions}'", + "Compare performance with: perf diff [<old file> <new file>]", + "Boolean options have negative forms like: perf report --no-children", + "Customize output of perf script with: perf script -F event,ip,sym", + "Generate a script for your data: perf script -g <lang>", + "Save output of perf stat using: perf stat record", + "Create archive of data to see it on other machine: perf archive", + "Search options using a keyword: perf report -h filter", + "Use parent filter to see specific call path: perf report -p <regex>", + "listing interested events using substring match: perf list cpu", + "To see list of saved events and attributes: perf evlist -v", + "Use --symfs <dir> if your symbol files are in non-standard location", + "To see callchains in a more compact form: perf report -g folded", + }; + + return tips[random() % ARRAY_SIZE(tips)]; +} diff --git a/tools/perf/util/util.h b/tools/perf/util/util.h index 4b519c59bdc3..8e9cec4bf376 100644 --- a/tools/perf/util/util.h +++ b/tools/perf/util/util.h @@ -342,4 +342,6 @@ int fetch_kernel_version(unsigned int *puint, #define KVER_FMT "%d.%d.%d" #define KVER_PARAM(x) KVER_VERSION(x), KVER_PATCHLEVEL(x), KVER_SUBLEVEL(x) +const char *perf_report_tip(void); + #endif /* GIT_COMPAT_UTIL_H */ -- 2.6.4 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/