lkml.org 
[lkml]   [2016]   [Feb]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 26/46] perf record: Disable buildid cache options by default in switch output mode
    Date
    Cost of buildid cache processing is high: read all events in output
    perf.data, open elf files to read buildid then copy them into
    ~/.debug directory. In switch output mode, causes perf stop receiving
    from 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>
    Signed-off-by: He Kuang <hekuang@huawei.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Zefan Li <lizefan@huawei.com>
    Cc: pi3orama@163.com
    ---
    tools/perf/builtin-record.c | 30 +++++++++++++++++++++++++++++-
    1 file changed, 29 insertions(+), 1 deletion(-)

    diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c
    index 0092e54..8a1523f 100644
    --- a/tools/perf/builtin-record.c
    +++ b/tools/perf/builtin-record.c
    @@ -1377,8 +1377,36 @@ int cmd_record(int argc, const char **argv, const char *prefix __maybe_unused)
    "If some relocation was applied (e.g. kexec) symbols may be misresolved\n"
    "even with a suitable vmlinux or kallsyms file.\n\n");

    - if (rec->no_buildid_cache || rec->no_buildid)
    + if (rec->no_buildid_cache || rec->no_buildid) {
    disable_buildid_cache();
    + } else if (rec->switch_output) {
    + /*
    + * In 'perf record --switch-output', disable buildid
    + * generation by default to reduce data file switching
    + * overhead. Still generate buildid if they are required
    + * explicitly using
    + *
    + * perf record --signal-trigger --no-no-buildid \
    + * --no-no-buildid-cache
    + *
    + * Following code equals to:
    + *
    + * if ((rec->no_buildid || !rec->no_buildid_set) &&
    + * (rec->no_buildid_cache || !rec->no_buildid_cache_set))
    + * disable_buildid_cache();
    + */
    + bool disable = true;
    +
    + if (rec->no_buildid_set && !rec->no_buildid)
    + disable = false;
    + if (rec->no_buildid_cache_set && !rec->no_buildid_cache)
    + disable = false;
    + if (disable) {
    + rec->no_buildid = true;
    + rec->no_buildid_cache = true;
    + disable_buildid_cache();
    + }
    + }

    if (rec->evlist->nr_entries == 0 &&
    perf_evlist__add_default(rec->evlist) < 0) {
    --
    1.8.3.4
    \
     
     \ /
      Last update: 2016-02-26 11:21    [W:3.876 / U:0.228 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site