From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752574AbcEAHk6 (ORCPT ); Sun, 1 May 2016 03:40:58 -0400 Received: from terminus.zytor.com ([198.137.202.10]:40392 "EHLO terminus.zytor.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751372AbcEAHk5 (ORCPT ); Sun, 1 May 2016 03:40:57 -0400 Date: Sun, 1 May 2016 00:40:41 -0700 From: tip-bot for Wang Nan Message-ID: Cc: adrian.hunter@intel.com, tglx@linutronix.de, wangnan0@huawei.com, acme@redhat.com, lizefan@huawei.com, mingo@kernel.org, mhiramat@kernel.org, namhyung@kernel.org, hpa@zytor.com, jolsa@redhat.com, hekuang@huawei.com, linux-kernel@vger.kernel.org Reply-To: mhiramat@kernel.org, namhyung@kernel.org, hpa@zytor.com, jolsa@redhat.com, hekuang@huawei.com, linux-kernel@vger.kernel.org, tglx@linutronix.de, adrian.hunter@intel.com, wangnan0@huawei.com, acme@redhat.com, mingo@kernel.org, lizefan@huawei.com In-Reply-To: <1461178794-40467-6-git-send-email-wangnan0@huawei.com> References: <1461178794-40467-6-git-send-email-wangnan0@huawei.com> To: linux-tip-commits@vger.kernel.org Subject: [tip:perf/core] perf record: Disable buildid cache options by default in switch output mode Git-Commit-ID: 0c1d46a8796e8309f1ca693e5cad6f318e4b8159 X-Mailer: tip-git-log-daemon Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8 Content-Disposition: inline Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Commit-ID: 0c1d46a8796e8309f1ca693e5cad6f318e4b8159 Gitweb: http://git.kernel.org/tip/0c1d46a8796e8309f1ca693e5cad6f318e4b8159 Author: Wang Nan AuthorDate: Wed, 20 Apr 2016 18:59:52 +0000 Committer: Arnaldo Carvalho de Melo CommitDate: Thu, 28 Apr 2016 09:58:59 -0300 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 Cc: Adrian Hunter Cc: Jiri Olsa Cc: Masami Hiramatsu Cc: Namhyung Kim Cc: Zefan Li Cc: pi3orama@163.com Link: http://lkml.kernel.org/r/1461178794-40467-6-git-send-email-wangnan0@huawei.com Signed-off-by: He Kuang [ Updated man page ] Signed-off-by: Arnaldo Carvalho de Melo --- tools/perf/Documentation/perf-record.txt | 2 +- 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 79a8a14..8dbee83 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 that gets then processed, possibly via a perf script, to decide if that particular perf.data snapshot should be kept or not. -Implies --timestamp-filename. +Implies --timestamp-filename, --no-buildid and --no-buildid-cache. SEE ALSO -------- diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c index 80b805b..178b49e 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) "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) {