HALO: post-link heap-layout optimisation

Joe Savage, Timothy M. Jones
<span title="2020-02-22">2020</span> <i title="ACM"> <a target="_blank" rel="noopener" href="https://fatcat.wiki/container/bmxgpqt325gxrkrxonhmytmhiu" style="color: black;">Proceedings of the 18th ACM/IEEE International Symposium on Code Generation and Optimization</a> </i> &nbsp;
Today, general-purpose memory allocators dominate the landscape of dynamic memory management. While these solutions can provide reasonably good behaviour across a wide range of workloads, it is an unfortunate reality that their behaviour for any particular workload can be highly suboptimal. By catering primarily to average and worst-case usage patterns, these allocators deny programs the advantages of domain-specific optimisations, and thus may inadvertently place data in a manner that hinders
more &raquo; ... erformance, generating unnecessary cache misses and load stalls. To help alleviate these issues, we propose HALO: a postlink profile-guided optimisation tool that can improve the layout of heap data to reduce cache misses automatically. Profiling the target binary to understand how allocations made in different contexts are related, we specialise memorymanagement routines to allocate groups of related objects from separate pools to increase their spatial locality. Unlike other solutions of its kind, HALO employs novel grouping and identification algorithms which allow it to create tight-knit allocation groups using the entire call stack and to identify these efficiently at runtime. Evaluation of HALO on contemporary out-of-order hardware demonstrates speedups of up to 28% over jemalloc, out-performing a state-of-theart data placement technique from the literature. CCS Concepts • Software and its engineering → Allocation / deallocation strategies.
<span class="external-identifiers"> <a target="_blank" rel="external noopener noreferrer" href="https://doi.org/10.1145/3368826.3377914">doi:10.1145/3368826.3377914</a> <a target="_blank" rel="external noopener" href="https://dblp.org/rec/conf/cgo/SavageJ20.html">dblp:conf/cgo/SavageJ20</a> <a target="_blank" rel="external noopener" href="https://fatcat.wiki/release/lmr4btnnjzdkticd3sjj477k4e">fatcat:lmr4btnnjzdkticd3sjj477k4e</a> </span>
<a target="_blank" rel="noopener" href="https://web.archive.org/web/20200507202424/https://www.repository.cam.ac.uk/bitstream/handle/1810/301045/savage20-cgo%20(3).pdf;jsessionid=138D19C9C0A5184EE1A6334AACA9E7FC?sequence=3" title="fulltext PDF download" data-goatcounter-click="serp-fulltext" data-goatcounter-title="serp-fulltext"> <button class="ui simple right pointing dropdown compact black labeled icon button serp-button"> <i class="icon ia-icon"></i> Web Archive [PDF] <div class="menu fulltext-thumbnail"> <img src="https://blobs.fatcat.wiki/thumbnail/pdf/e1/3b/e13b9911ed2aef902bb42bdafd3fe7345f2a6cd1.180px.jpg" alt="fulltext thumbnail" loading="lazy"> </div> </button> </a> <a target="_blank" rel="external noopener noreferrer" href="https://doi.org/10.1145/3368826.3377914"> <button class="ui left aligned compact blue labeled icon button serp-button"> <i class="external alternate icon"></i> acm.org </button> </a>