论文标题
利用三个页面大小的建筑支持
Leveraging Architectural Support of Three Page Sizes with Trident
论文作者
论文摘要
通常部署大型页面,以减少大型内存工作负载的地址翻译开销。来自英特尔和AMD的现代X86-64处理器支持两个大型页面尺寸-1GB和2MB。但是,以前在大页面上的著作主要集中在2MB页面上,部分原因是缺乏关于1GB页面对现实世界应用的盈利能力的大量证据。我们认为,实际上,系统软件支持不足是为了使1GB页面的十年未充分利用的硬件支持。 通过对真实系统进行的大量实验,我们证明1GB页面可以在2MB页面上提高性能,并且在与2MB页面同时使用时,用于一组重要的应用程序;对后者的支持至关重要,但在当前系统中缺少。我们在Linux中对\ trident {}的设计和实现完全利用硬件支持大页面,通过动态和透明地分配1GB,2MB和4KB页面,认为合适。 \ trident {}通过Linux使用2MB页面,{$ 18 \%$}加速了八个内存密集型应用程序。我们还建议\ tridentpv {},这是\ trident {}的扩展名,该扩展可以通过客座操作系统中的无复制促销和压实来有效地虚拟化1GB页面。总体而言,本文表明,即使是GB大小的页面也具有相当大的实际意义,而软件启用又可以激发建筑师继续在大型页面上进行投资/创新。
Large pages are commonly deployed to reduce address translation overheads for big-memory workloads. Modern x86-64 processors from Intel and AMD support two large page sizes -- 1GB and 2MB. However, previous works on large pages have primarily focused on 2MB pages, partly due to lack of substantial evidence on the profitability of 1GB pages to real-world applications. We argue that in fact, inadequate system software support is responsible for a decade of underutilized hardware support for 1GB pages. Through extensive experimentation on a real system, we demonstrate that 1GB pages can improve performance over 2MB pages, and when used in tandem with 2MB pages for an important set of applications; the support for the latter is crucial but missing in current systems. Our design and implementation of \trident{} in Linux fully exploit hardware supported large pages by dynamically and transparently allocating 1GB, 2MB, and 4KB pages as deemed suitable. \trident{} speeds up eight memory-intensive applications by {$18\%$}, on average, over Linux's use of 2MB pages. We also propose \tridentpv{}, an extension to \trident{} that effectively virtualizes 1GB pages via copy-less promotion and compaction in the guest OS. Overall, this paper shows that even GB-sized pages have considerable practical significance with adequate software enablement, in turn motivating architects to continue investing/innovating in large pages.