Post processing at perf record takes long time on big machines.  What it
does is to find build-id of related binaries.  Sometimes we just want to
skip the processing and get the result quickly.  Add a new config option
to control this behavior.

The record.build-id config variable can have one of following:

 - cache: post-process data and save/update the binaries into the
          build-id cache (in ~/.debug).  This is default.
 - no-cache: post-process data but not update the build-id cache.
             Same effect with using -N option.
 - skip: skip post-processing and not update the cache.
         Same effect with using -B option.

Reported-by: Peter Zijlstra <pet...@infradead.org>
Cc: Taeung Song <treeze.tae...@gmail.com>
Signed-off-by: Namhyung Kim <namhy...@kernel.org>
---
 tools/perf/Documentation/perf-record.txt | 11 ++++++++++-
 tools/perf/builtin-record.c              | 13 +++++++++++++
 2 files changed, 23 insertions(+), 1 deletion(-)

diff --git a/tools/perf/Documentation/perf-record.txt 
b/tools/perf/Documentation/perf-record.txt
index e630a7d2c348..809ac8701808 100644
--- a/tools/perf/Documentation/perf-record.txt
+++ b/tools/perf/Documentation/perf-record.txt
@@ -207,11 +207,20 @@ comma-separated list with no space: 0,1. Ranges of CPUs 
are specified with -: 0-
 In per-thread mode with inheritance mode on (default), samples are captured 
only when
 the thread executes on the designated CPUs. Default is to monitor all CPUs.
 
+-B::
+--no-buildid::
+Do not save the buildid of (used) binaries in the data file. This skips
+post-processing after recoring which might take some time on big machines.
+The Downside is that it can resolve into a wrong symbol after a binary is
+rebuilt later.  You can also set "record.build-id" config variable to
+'skip' to have same effect.
+
 -N::
 --no-buildid-cache::
 Do not update the buildid cache. This saves some overhead in situations
 where the information in the perf.data file (which includes buildids)
-is sufficient.
+is sufficient.  You can also set "record.build-id" config variable to
+'no-cache' to have same effect.
 
 -G name,...::
 --cgroup name,...::
diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c
index 199fc31e3919..424de323c1f8 100644
--- a/tools/perf/builtin-record.c
+++ b/tools/perf/builtin-record.c
@@ -837,6 +837,19 @@ int record_callchain_opt(const struct option *opt,
 
 static int perf_record_config(const char *var, const char *value, void *cb)
 {
+       struct record *rec = cb;
+
+       if (!strcmp(var, "record.build-id")) {
+               if (!strcmp(value, "cache"))
+                       rec->no_buildid_cache = false;
+               else if (!strcmp(value, "no-cache"))
+                       rec->no_buildid_cache = true;
+               else if (!strcmp(value, "skip"))
+                       rec->no_buildid = true;
+               else
+                       return -1;
+               return 0;
+       }
        if (!strcmp(var, "record.call-graph"))
                var = "call-graph.record-mode"; /* fall-through */
 
-- 
2.6.4

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to