Application virtual memory footprints are growing rapidly in all systems from servers to smartphones. To address this growing demand, system integrators are incorporating larger amounts of main memory, warranting rethinking of memory management. In current systems, applications produce page faults whenever they access virtual memory regions that are not backed by a physical page. As application memory footprints grow, they induce more and more minor pagefaults. Handling of each minor page fault can take few 1000's of CPU-cycles and blocks the application till OS kernel finds a free physical frame. These page faults can be detrimental to the performance when their frequency of occurrence is high and spread across application run-time. Our evaluation of several workloads indicates an overhead due to minor page faults as high as 29% of execution time. In this paper, we propose to mitigate this problem through a HW/SW co-design approach. Specifically, we first propose to parallelize portions of the kernel page allocation to run ahead of fault time in a separate thread. Then we propose the Minor Fault Offload Engine(MFOE), a per-core HW accelerator for minor fault handling. MFOE is equipped with pre-allocated frame table that it uses to service a page fault. On a page fault, MFOE quickly picks a pre-allocated page frame from this table, makes an entry for it in the TLB, and updates the page table entry to satisfy the page fault. The pre-allocation frame tables are periodically refreshed by a background thread, which also updates the data structures in the kernel to account for the handled page faults. We evaluate this system in the gem5 simulator with a modified Linux kernel running on top of simulated hardware. Our results show that MFOE improves the critical-path fault handling latency by 37x and improves the run-time amongst the evaluated applications, by an average of 7.5%
翻译:从服务器到智能手机的所有系统中,应用程序的虚拟记忆足迹正在迅速增长。为满足这一不断增长的需求,系统集成器正在将更多的主内存纳入更多的内容,这需要重新思考记忆管理。在目前的系统中,应用程序在进入没有物理页面支持的虚拟内存区域时会产生页误差。随着应用程序的内存足迹的增加,它们会引发越来越多的小页误差。处理每个小页错误可能要花几千个CPU周期的时间,并堵塞应用程序,直到OS内核找到一个免费的物理框架。这些页误差可能会损害业绩,当它们发生频率高且在应用程序运行期间扩散时。在目前的系统中,我们对一些页误差导致的页误差高达29%的执行时间。在本文件中,我们建议通过一个 HW/SW 联合设计选项来缓解这一问题。具体地,我们首先建议通过一个单独的线索将部分内断层页差分配到错误前的时间,然后我们建议Drail-load 引擎(MFOE),一个内部的内存系统会快速更新。