Abstract
While huge pages can dramatically reduce address translation overhead, their use for executable code remains limited by structural barriers in binary formats, page cache management, and loader mechanisms. Existing solutions copy code into anonymous memory, abandoning file-backed semantics and breaking cross-process sharing, memory reclamation, and debugging tools. Emerging kernel support for file-backed huge pages remains insufficient without relinking and modifying loaders, impractical for deployed and closed-source software.
We present Hugifier, a userspace solution that enables huge page mappings for existing executables while preserving file-backed memory semantics—executable memory sharing, paging, and debugging all continue to work correctly. Hugifier combines a binary transformation that aligns code segments to huge page boundaries without disassembly or relinking, with a runtime component that ensures huge page mappings on current kernels. Evaluation shows over 90% iTLB miss reduction and up to 11.3% speedup—exceeding libhugetlbfs by up to 5.3% and Linux’s current RO-THP by 7.3%; against a stronger “aligned” baseline modeling future kernel/loader support without segment separation, the binary transformation still adds 5.5%.