mbox

[0/6] malloc: more memory tagging optimizations

Message ID cover.1616155129.git.szabolcs.nagy@arm.com
Headers

Message

Szabolcs Nagy March 19, 2021, 1:25 p.m. UTC
  Second set of refactoring patches on top of the previously posted
patches. The two sets together are in the nsz/mtag-2 branch.

The main changes are renaming CHUNK_AVAILABLE_SIZE and changing
chunk2mem to not get the tag at mem (so the returned pointer
is not suitable for dereference if mem is already tagged, but
that turns out to be rare).

Further changes considered but rejected:

- remove tag_at from mem2chunk too (mem is often known to be
  untagged, or we can assume the internal tag is 0 and turn
  tag_at into an unmask operations). this does not seem to have
  much performance effect on small allocations.

- don't try to use a new tag different from the old one in
  tag_new_usable since at most call sites the old one is just
  the internal one which is excluded already from tag generation,
  only realloc benefits from the current behaviour. this change
  would be a bit aarch64 specific (tag generation can exclude the
  internally used tag) and does not have much perf effect either.

Szabolcs Nagy (6):
  malloc: Use memsize instead of CHUNK_AVAILABLE_SIZE
  malloc: Use different tag after mremap
  malloc: Use chunk2rawmem throughout
  malloc: Rename chunk2rawmem
  malloc: Remove unnecessary tagging around _mid_memalign
  malloc: Ensure mtag code path in checked_request2size is cold

 malloc/hooks.c  |  13 +++--
 malloc/malloc.c | 126 +++++++++++++++++++++++++-----------------------
 2 files changed, 72 insertions(+), 67 deletions(-)