[RFC/PATCH] perf report: Show random usage tip on the help line

From: Namhyung Kim
Date: Tue Jan 05 2016 - 00:37:44 EST


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 <namhyung@xxxxxxxxxx>
---
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 majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/