提交 5cfe2c82 编写于 作者: J Jiri Olsa 提交者: Arnaldo Carvalho de Melo

perf report: Add --header/--header-only options

Currently the perf.data header is always displayed for stdio output,
which is no always useful.

Disabling header information by default and adding following options to
control header output:

  --header      - display header information (old default)
  --header-only - display header information only w/o further
                  processing, forces stdio output
Signed-off-by: NJiri Olsa <jolsa@redhat.com>
Acked-by: NDavid Ahern <dsahern@gmail.com>
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/r/1386583370-1699-2-git-send-email-jolsa@redhat.com
[ Added single line explaining talking about the new --header* options,
  to address David Ahern comment; better man page entry for the new options,
  from Namhyung Kim ]
Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
上级 7ef2e813
...@@ -237,6 +237,15 @@ OPTIONS ...@@ -237,6 +237,15 @@ OPTIONS
Do not show entries which have an overhead under that percent. Do not show entries which have an overhead under that percent.
(Default: 0). (Default: 0).
--header::
Show header information in the perf.data file. This includes
various information like hostname, OS and perf version, cpu/mem
info, perf command line, event list and so on. Currently only
--stdio output supports this feature.
--header-only::
Show only perf.data header (forces --stdio).
SEE ALSO SEE ALSO
-------- --------
linkperf:perf-stat[1], linkperf:perf-annotate[1] linkperf:perf-stat[1], linkperf:perf-annotate[1]
...@@ -49,6 +49,8 @@ struct perf_report { ...@@ -49,6 +49,8 @@ struct perf_report {
bool show_threads; bool show_threads;
bool inverted_callchain; bool inverted_callchain;
bool mem_mode; bool mem_mode;
bool header;
bool header_only;
int max_stack; int max_stack;
struct perf_read_values show_threads_values; struct perf_read_values show_threads_values;
const char *pretty_printing_style; const char *pretty_printing_style;
...@@ -514,9 +516,6 @@ static int __cmd_report(struct perf_report *rep) ...@@ -514,9 +516,6 @@ static int __cmd_report(struct perf_report *rep)
return ret; return ret;
} }
if (use_browser <= 0)
perf_session__fprintf_info(session, stdout, rep->show_full_info);
if (rep->show_threads) if (rep->show_threads)
perf_read_values_init(&rep->show_threads_values); perf_read_values_init(&rep->show_threads_values);
...@@ -820,6 +819,9 @@ int cmd_report(int argc, const char **argv, const char *prefix __maybe_unused) ...@@ -820,6 +819,9 @@ int cmd_report(int argc, const char **argv, const char *prefix __maybe_unused)
OPT_BOOLEAN(0, "gtk", &report.use_gtk, "Use the GTK2 interface"), OPT_BOOLEAN(0, "gtk", &report.use_gtk, "Use the GTK2 interface"),
OPT_BOOLEAN(0, "stdio", &report.use_stdio, OPT_BOOLEAN(0, "stdio", &report.use_stdio,
"Use the stdio interface"), "Use the stdio interface"),
OPT_BOOLEAN(0, "header", &report.header, "Show data header."),
OPT_BOOLEAN(0, "header-only", &report.header_only,
"Show only data header."),
OPT_STRING('s', "sort", &sort_order, "key[,key2...]", OPT_STRING('s', "sort", &sort_order, "key[,key2...]",
"sort by key(s): pid, comm, dso, symbol, parent, cpu, srcline," "sort by key(s): pid, comm, dso, symbol, parent, cpu, srcline,"
" dso_to, dso_from, symbol_to, symbol_from, mispredict," " dso_to, dso_from, symbol_to, symbol_from, mispredict,"
...@@ -963,6 +965,10 @@ int cmd_report(int argc, const char **argv, const char *prefix __maybe_unused) ...@@ -963,6 +965,10 @@ int cmd_report(int argc, const char **argv, const char *prefix __maybe_unused)
goto error; goto error;
} }
/* Force tty output for header output. */
if (report.header || report.header_only)
use_browser = 0;
if (strcmp(input_name, "-") != 0) if (strcmp(input_name, "-") != 0)
setup_browser(true); setup_browser(true);
else { else {
...@@ -970,6 +976,16 @@ int cmd_report(int argc, const char **argv, const char *prefix __maybe_unused) ...@@ -970,6 +976,16 @@ int cmd_report(int argc, const char **argv, const char *prefix __maybe_unused)
perf_hpp__init(); perf_hpp__init();
} }
if (report.header || report.header_only) {
perf_session__fprintf_info(session, stdout,
report.show_full_info);
if (report.header_only)
return 0;
} else if (use_browser == 0) {
fputs("# To display the perf.data header info, please use --header/--header-only options.\n#\n",
stdout);
}
/* /*
* Only in the TUI browser we are doing integrated annotation, * Only in the TUI browser we are doing integrated annotation,
* so don't allocate extra space that won't be used in the stdio * so don't allocate extra space that won't be used in the stdio
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册