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/

Reply via email to