Re: [PATCHSET 0/8] perf tools: Fix scalability problem on callchainmerging (v5)

From: David Ahern
Date: Fri Oct 11 2013 - 18:04:51 EST


On 10/11/13 3:51 PM, Andi Kleen wrote:
David Ahern <dsahern@xxxxxxxxx> writes:

On 10/11/13 9:11 AM, David Ahern wrote:
It would be nice to fix the callchain arg handler to not attempt to
process the next argument if it is not fp or dwarf.

Specifically, something like this which maintains syntax and default
fp option:

Yes please! This happens to me all the time too

(usually I train myself to use -g --, but i still sometimes forget)

It still wouldn't handle -ga, but naked -g seems to be the common case.

grrr... you're right. I ran right through that. With -ga the 'a' gets lost.

This seems to do the trick:

diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c
index 92ca541..726d2c2 100644
--- a/tools/perf/builtin-record.c
+++ b/tools/perf/builtin-record.c
@@ -721,7 +721,11 @@ int record_parse_callchain_opt(const struct option *opt,
return 0;

/* We specified default option if none is provided. */
- BUG_ON(!arg);
+ if (!arg) {
+ opts->call_graph = CALLCHAIN_FP;
+ return 0;
+ }
+

/* We need buffer that we know we can write to. */
buf = malloc(strlen(arg) + 1);
@@ -766,8 +770,8 @@ int record_parse_callchain_opt(const struct option *opt,
opts->stack_dump_size);
#endif /* HAVE_LIBUNWIND_SUPPORT */
} else {
- pr_err("callchain: Unknown -g option "
- "value: %s\n", arg);
+ opts->call_graph = CALLCHAIN_FP;
+ ret = 0;
break;
}

@@ -855,7 +859,7 @@ const struct option record_options[] = {
perf_evlist__parse_mmap_pages),
OPT_BOOLEAN(0, "group", &record.opts.group,
"put the counters into a counter group"),
- OPT_CALLBACK_DEFAULT('g', "call-graph", &record.opts,
+ OPT_CALLBACK_DEFAULT_NOOPT('g', "call-graph", &record.opts,
"mode[,dump_size]", record_callchain_help,
&record_parse_callchain_opt, "fp"),
OPT_INCR('v', "verbose", &verbose,
--
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/