1
0
Fork 0

perf trace: Add --max-stack knob

Similar to the one in the other tools (report, script, top).

Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Milian Wolff <milian.wolff@kdab.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/n/tip-lh7kk5a5t3erwxw31ah0cgar@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
hifive-unleashed-5.1
Arnaldo Carvalho de Melo 2016-04-14 18:29:08 -03:00
parent 6125cc8dac
commit c6d4a494a2
2 changed files with 17 additions and 1 deletions

View File

@ -129,6 +129,15 @@ the thread executes on the designated CPUs. Default is to monitor all CPUs.
--event::
Trace other events, see 'perf list' for a complete list.
--max-stack::
Set the stack depth limit when parsing the callchain, anything
beyond the specified depth will be ignored. Note that at this point
this is just about the presentation part, i.e. the kernel is still
not limiting, the overhead of callchains needs to be set via the
knobs in --call-graph dwarf.
Default: 127
--proc-map-timeout::
When processing pre-existing threads /proc/XXX/mmap, it may take a long time,
because the file may be huge. A time out is needed in such cases.

View File

@ -46,6 +46,7 @@
#include <linux/audit.h>
#include <sys/ptrace.h>
#include <linux/random.h>
#include <linux/stringify.h>
#ifndef O_CLOEXEC
# define O_CLOEXEC 02000000
@ -106,6 +107,7 @@ struct trace {
u64 vfs_getname,
proc_getname;
} stats;
unsigned int max_stack;
bool not_ev_qualifier;
bool live;
bool full_time;
@ -1892,7 +1894,7 @@ static int trace__fprintf_callchain(struct trace *trace, struct perf_evsel *evse
if (machine__resolve(trace->host, &al, sample) < 0 ||
thread__resolve_callchain(al.thread, &callchain_cursor, evsel,
sample, NULL, NULL, scripting_max_stack)) {
sample, NULL, NULL, trace->max_stack)) {
pr_err("Problem processing %s callchain, skipping...\n",
perf_evsel__name(evsel));
return 0;
@ -3029,6 +3031,7 @@ int cmd_trace(int argc, const char **argv, const char *prefix __maybe_unused)
.show_comm = true,
.trace_syscalls = true,
.kernel_syscallchains = false,
.max_stack = PERF_MAX_STACK_DEPTH,
};
const char *output_name = NULL;
const char *ev_qualifier_str = NULL;
@ -3079,6 +3082,10 @@ int cmd_trace(int argc, const char **argv, const char *prefix __maybe_unused)
&record_parse_callchain_opt),
OPT_BOOLEAN(0, "kernel-syscall-graph", &trace.kernel_syscallchains,
"Show the kernel callchains on the syscall exit path"),
OPT_UINTEGER(0, "max-stack", &trace.max_stack,
"Set the maximum stack depth when parsing the callchain, "
"anything beyond the specified depth will be ignored. "
"Default: " __stringify(PERF_MAX_STACK_DEPTH)),
OPT_UINTEGER(0, "proc-map-timeout", &trace.opts.proc_map_timeout,
"per thread proc mmap processing timeout in ms"),
OPT_END()