perf map: Remove ->groups from 'struct map'
A message that is not in the archive (sent off-list or not yet received): [email protected]
The following commit has been merged into the perf/core branch of tip:
Commit-ID: 7b018e298752b9bcaf34eba8e1d3c08e3207dfd8 Gitweb: https://git.kernel.org/tip/7b018e298752b9bcaf34eba8e1d3c08e3207dfd8 Author: Arnaldo Carvalho de Melo <[email protected]> AuthorDate: Mon, 04 Nov 2019 16:55:53 -03:00 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitterDate: Tue, 12 Nov 2019 08:20:53 -03:00
perf map: Remove ->groups from 'struct map'
With this 'struct map' uses a bit over 3 cachelines:
$ pahole -C map ~/bin/perf <SNIP> /* --- cacheline 2 boundary (128 bytes) --- */ u64 (*unmap_ip)(struct map *, u64); /* 128 8 */ struct dso * dso; /* 136 8 */ refcount_t refcnt; /* 144 4 */
/* size: 152, cachelines: 3, members: 18 */ /* sum members: 145, holes: 1, sum holes: 3 */ /* padding: 4 */ /* forced alignments: 2 */ /* last cacheline: 24 bytes */ } __attribute__((__aligned__(8))); $
We probably can move map->map/unmap_ip() moved to 'struct map_groups', that will shave more 16 bytes, getting this almost to two cachelines.
Cc Adrian Hunter <[email protected]>
Cc Andi Kleen <[email protected]>
Cc Jiri Olsa <[email protected]>
Cc Namhyung Kim <[email protected]>
Signed-off-by Arnaldo Carvalho de Melo <[email protected]>
--- tools/perf/util/map.c | 4 ---- tools/perf/util/map.h | 1 - 2 files changed, 5 deletions(-)
tools/perf/util/map.c +0 -4
@@ -140,7 +140,6 @@ void map__init(struct map *map, u64 start, u64 end, u64 pgoff, struct dso *dso) map->map_ip = map__map_ip; map->unmap_ip = map__unmap_ip;RB_CLEAR_NODE (&map->rb_node); - map->groups =NULL ; map->erange_warned = false;refcount_set (&map->refcnt,1 ); }
@@ -388,7 +387,6 @@ struct map *map__clone(struct map *from)refcount_set (&map->refcnt,1 );RB_CLEAR_NODE (&map->rb_node);dso__get (map->dso); - map->groups =NULL ; }return map;
@@ -582,7 +580,6 @@ void map_groups__init(struct map_groups *mg, struct machine *machine)void map_groups__insert (struct map_groups *mg,struct map *map) {maps__insert (&mg->maps, map); - map->groups = mg; }static void __maps__purge (struct maps *maps)
@@ -749,7 +746,6 @@ static void __map_groups__insert(struct map_groups *mg, struct map *map) {__maps__insert (&mg->maps, map);__maps__insert_name (&mg->maps, map); - map->groups = mg; }int map_groups__fixup_overlappings (struct map_groups *mg,struct map *map,FILE *fp)
tools/perf/util/map.h +0 -1
@@ -42,7 +42,6 @@ struct map {u64 (*unmap_ip)(struct map *,u64 );struct dso *dso; -struct map_groups *groups;refcount_t refcnt; };