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 <adrian.hunter@intel.com> Cc: Andi Kleen <ak@linux.intel.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Namhyung Kim <namhyung@kernel.org> Link: https://lkml.kernel.org/n/tip-ymlv3nzpofv2fugnjnizkrwy@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
3f662fc08d
commit
7b018e2987
|
@ -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)
|
||||
|
|
|
@ -42,7 +42,6 @@ struct map {
|
|||
u64 (*unmap_ip)(struct map *, u64);
|
||||
|
||||
struct dso *dso;
|
||||
struct map_groups *groups;
|
||||
refcount_t refcnt;
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue