diff options
author | 2025-07-31 00:03:30 -0700 | |
---|---|---|
committer | 2025-07-31 10:46:46 -0700 | |
commit | 6235ce77749f45cac27f630337e2fdf04e8a6c73 (patch) | |
tree | fca6c4c0d8e2a56b7fa7b9f1f53dd94560aa434a | |
parent | perf test: Ensure lock contention using pipe mode (diff) | |
download | wireguard-linux-6235ce77749f45cac27f630337e2fdf04e8a6c73.tar.xz wireguard-linux-6235ce77749f45cac27f630337e2fdf04e8a6c73.zip |
perf record: Cache build-ID of hit DSOs only
It post-processes samples to find which DSO has samples. Based on that
info, it can save used DSOs in the build-ID cache directory. But for
some reason, it saves all DSOs without checking the hit mark. Skipping
unused DSOs can give some speedup especially with --buildid-mmap being
default.
On my idle machine, `time perf record -a sleep 1` goes down from 3 sec
to 1.5 sec with this change.
Fixes: e29386c8f7d71fa5 ("perf record: Add --buildid-mmap option to enable PERF_RECORD_MMAP2's build id")
Reviewed-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Link: https://lore.kernel.org/r/20250731070330.57116-1-namhyung@kernel.org
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
-rw-r--r-- | tools/perf/util/build-id.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/tools/perf/util/build-id.c b/tools/perf/util/build-id.c index e2b295fe4d2f..a7018a3b0437 100644 --- a/tools/perf/util/build-id.c +++ b/tools/perf/util/build-id.c @@ -872,7 +872,7 @@ static int dso__cache_build_id(struct dso *dso, struct machine *machine, char *allocated_name = NULL; int ret = 0; - if (!dso__has_build_id(dso)) + if (!dso__has_build_id(dso) || !dso__hit(dso)) return 0; if (dso__is_kcore(dso)) { |