diff options
author | Ian Rogers <irogers@google.com> | 2024-09-09 22:37:39 +0200 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2024-09-10 22:32:47 +0200 |
commit | 64eed019f3fce1248cd29443c8a8635d317cb70f (patch) | |
tree | cf547af7ad8104fa17810900dac55a01eced6175 /tools/perf/util | |
parent | perf inject: Add new mmap2-buildid-all option (diff) | |
download | linux-64eed019f3fce1248cd29443c8a8635d317cb70f.tar.xz linux-64eed019f3fce1248cd29443c8a8635d317cb70f.zip |
perf inject: Lazy build-id mmap2 event insertion
Add -B option that lazily inserts mmap2 events thereby dropping all
mmap events without samples. This is similar to the behavior of -b
where only build_id events are inserted when a dso is accessed in a
sample.
File size savings can be significant in system-wide mode, consider:
$ perf record -g -a -o perf.data sleep 1
$ perf inject -B -i perf.data -o perf.new.data
$ ls -al perf.data perf.new.data
5147049 perf.data
2248493 perf.new.data
Give test coverage of the new option in pipe test.
Signed-off-by: Ian Rogers <irogers@google.com>
Acked-by: Namhyung Kim <namhyung@kernel.org>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Anne Macedo <retpolanne@posteo.net>
Cc: Casey Chen <cachen@purestorage.com>
Cc: Colin Ian King <colin.i.king@gmail.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Sun Haiyong <sunhaiyong@loongson.cn>
Link: https://lore.kernel.org/r/20240909203740.143492-4-irogers@google.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/util')
-rw-r--r-- | tools/perf/util/map.c | 1 | ||||
-rw-r--r-- | tools/perf/util/map.h | 11 |
2 files changed, 12 insertions, 0 deletions
diff --git a/tools/perf/util/map.c b/tools/perf/util/map.c index e781c8d56a9a..d729438b7d65 100644 --- a/tools/perf/util/map.c +++ b/tools/perf/util/map.c @@ -116,6 +116,7 @@ static void map__init(struct map *map, u64 start, u64 end, u64 pgoff, map__set_mapping_type(map, MAPPING_TYPE__DSO); assert(map__erange_warned(map) == false); assert(map__priv(map) == false); + assert(map__hit(map) == false); } struct map *map__new(struct machine *machine, u64 start, u64 len, diff --git a/tools/perf/util/map.h b/tools/perf/util/map.h index 6c43f31a9fe0..4262f5a143be 100644 --- a/tools/perf/util/map.h +++ b/tools/perf/util/map.h @@ -35,6 +35,7 @@ DECLARE_RC_STRUCT(map) { enum mapping_type mapping_type:8; bool erange_warned; bool priv; + bool hit; }; struct kmap; @@ -83,6 +84,11 @@ static inline bool map__priv(const struct map *map) return RC_CHK_ACCESS(map)->priv; } +static inline bool map__hit(const struct map *map) +{ + return RC_CHK_ACCESS(map)->hit; +} + static inline refcount_t *map__refcnt(struct map *map) { return &RC_CHK_ACCESS(map)->refcnt; @@ -287,6 +293,11 @@ static inline void map__set_priv(struct map *map) RC_CHK_ACCESS(map)->priv = true; } +static inline void map__set_hit(struct map *map) +{ + RC_CHK_ACCESS(map)->hit = true; +} + static inline void map__set_erange_warned(struct map *map) { RC_CHK_ACCESS(map)->erange_warned = true; |