diff options
author | Wang Nan <wangnan0@huawei.com> | 2016-04-20 14:59:52 -0400 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2016-04-28 08:58:59 -0400 |
commit | 0c1d46a8796e8309f1ca693e5cad6f318e4b8159 (patch) | |
tree | 498eda9d8a2a2164bcfe409813fe44df2501d1a3 | |
parent | eca857ab381858450ec2f91f5aaae7f2f7a7a180 (diff) |
perf record: Disable buildid cache options by default in switch output mode
The cost of buildid cache processing is high: reading all events in
output perf.data, opening each elf file to read buildids then copying
them into ~/.debug directory. In switch output mode, these heavy works
block perf from receiving perf events for too long.
Enable no-buildid and no-buildid-cache by default if --switch-output is
provided. Still allow user use --no-no-buildid to explicitly enable
buildid in this case.
Signed-off-by: Wang Nan <wangnan0@huawei.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Zefan Li <lizefan@huawei.com>
Cc: pi3orama@163.com
Link: http://lkml.kernel.org/r/1461178794-40467-6-git-send-email-wangnan0@huawei.com
Signed-off-by: He Kuang <hekuang@huawei.com>
[ Updated man page ]
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
-rw-r--r-- | tools/perf/Documentation/perf-record.txt | 2 | ||||
-rw-r--r-- | tools/perf/builtin-record.c | 30 |
2 files changed, 30 insertions, 2 deletions
diff --git a/tools/perf/Documentation/perf-record.txt b/tools/perf/Documentation/perf-record.txt index 79a8a14f37b1..8dbee832abd9 100644 --- a/tools/perf/Documentation/perf-record.txt +++ b/tools/perf/Documentation/perf-record.txt | |||
@@ -358,7 +358,7 @@ A possible use case is to, given an external event, slice the perf.data file | |||
358 | that gets then processed, possibly via a perf script, to decide if that | 358 | that gets then processed, possibly via a perf script, to decide if that |
359 | particular perf.data snapshot should be kept or not. | 359 | particular perf.data snapshot should be kept or not. |
360 | 360 | ||
361 | Implies --timestamp-filename. | 361 | Implies --timestamp-filename, --no-buildid and --no-buildid-cache. |
362 | 362 | ||
363 | SEE ALSO | 363 | SEE ALSO |
364 | -------- | 364 | -------- |
diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c index 80b805b7f5c7..178b49ecd05f 100644 --- a/tools/perf/builtin-record.c +++ b/tools/perf/builtin-record.c | |||
@@ -1387,8 +1387,36 @@ int cmd_record(int argc, const char **argv, const char *prefix __maybe_unused) | |||
1387 | "If some relocation was applied (e.g. kexec) symbols may be misresolved\n" | 1387 | "If some relocation was applied (e.g. kexec) symbols may be misresolved\n" |
1388 | "even with a suitable vmlinux or kallsyms file.\n\n"); | 1388 | "even with a suitable vmlinux or kallsyms file.\n\n"); |
1389 | 1389 | ||
1390 | if (rec->no_buildid_cache || rec->no_buildid) | 1390 | if (rec->no_buildid_cache || rec->no_buildid) { |
1391 | disable_buildid_cache(); | 1391 | disable_buildid_cache(); |
1392 | } else if (rec->switch_output) { | ||
1393 | /* | ||
1394 | * In 'perf record --switch-output', disable buildid | ||
1395 | * generation by default to reduce data file switching | ||
1396 | * overhead. Still generate buildid if they are required | ||
1397 | * explicitly using | ||
1398 | * | ||
1399 | * perf record --signal-trigger --no-no-buildid \ | ||
1400 | * --no-no-buildid-cache | ||
1401 | * | ||
1402 | * Following code equals to: | ||
1403 | * | ||
1404 | * if ((rec->no_buildid || !rec->no_buildid_set) && | ||
1405 | * (rec->no_buildid_cache || !rec->no_buildid_cache_set)) | ||
1406 | * disable_buildid_cache(); | ||
1407 | */ | ||
1408 | bool disable = true; | ||
1409 | |||
1410 | if (rec->no_buildid_set && !rec->no_buildid) | ||
1411 | disable = false; | ||
1412 | if (rec->no_buildid_cache_set && !rec->no_buildid_cache) | ||
1413 | disable = false; | ||
1414 | if (disable) { | ||
1415 | rec->no_buildid = true; | ||
1416 | rec->no_buildid_cache = true; | ||
1417 | disable_buildid_cache(); | ||
1418 | } | ||
1419 | } | ||
1392 | 1420 | ||
1393 | if (rec->evlist->nr_entries == 0 && | 1421 | if (rec->evlist->nr_entries == 0 && |
1394 | perf_evlist__add_default(rec->evlist) < 0) { | 1422 | perf_evlist__add_default(rec->evlist) < 0) { |