Memory-intensive applications, such as in-memory databases, caching systems and key-value stores, are increasingly demanding larger main memory to fit their working sets. Conventional swapping can enlarge the memory capacity by paging out inactive pages to disks. However, the heavy I/O stack makes the traditional kernel-based swapping suffers from several critical performance issues. In this paper, we redesign the swapping system and propose LightSwap, an high-performance user-space swapping scheme that supports paging with both local SSDs and remote memories. First, to avoids kernel-involving, a novel page fault handling mechanism is proposed to handle page faults in user-space and further eliminates the heavy I/O stack with the help of user-space I/O drivers. Second, we co-design Lightswap with light weight thread (LWT) to improve system throughput and make it be transparent to user applications. Finally, we propose a try-catch framework in Lightswap to deal with paging errors which are exacerbated by the scaling in process technology. We implement Lightswap in our production-level system and evaluate it with YCSB workloads running on memcached. Results show that Ligthswap reduces the page faults handling latency by 3--5 times, and improves the throughput of memcached by more than 40% compared with the stat-of-art swapping systems.
翻译:内存密集型应用程序,如内存数据库、缓存系统和关键值仓库等,正日益要求更大的主内存,以适合其工作设置。常规互换可以通过将不活跃的页面贴出磁盘来扩大内存能力。然而,重 I/O堆使得传统的内核互换具有若干关键的性能问题。在本文中,我们重新设计互换系统,并提议一个高性能的用户-空间互换计划LightSwap,即一个支持与本地 SSDs和远程记忆相呼应的高性能用户-空间互换计划。首先,为了避免内核参与,提议了一个新颖的页过错处理机制,以处理用户空间中的页过错,并在用户-空间一/O驱动器的帮助下进一步消除重的 I/O 堆。 其次,我们用光重线共同指定 Lightswap 系统(LWT) 来改进系统,使其对用户应用程序透明。 最后,我们提议在 Lightswapwap中建立一个试捕框架,以应对因流程技术规模扩大而加剧的错误。我们用 Lightswap 3SB 来比较Lind-dewapping 和Lislick 系统, 通过运行时显示YSBLisxx