高级检索

    Skipswap:托管式运行时语义感知的高性能远端内存数据通路

    Skipswap: A High-Performance Managed Runtime Semantics-Aware Data Path for Far Memory

    • 摘要: 以Java,Python,Scala为代表的托管式语言通过垃圾回收机制(garbage collection,GC)实现自动内存管理,能够提高应用开发效率和内存安全性,因此被广泛应用于大数据场景。随着分离式内存架构在数据中心的快速部署,操作系统内存管理机制也相应演进,例如扩展内核页交换系统(kernel paging),支持数据在本地内存与远端内存之间迁移。然而,分析发现,托管式语言现有GC机制与底层分离式内存系统之间存在的程序语义隔阂(program semantics gap)会导致大量无用数据在本地内存与远端内存之间迁移,进而显著降低应用性能。在实验中,最高50%(平均34.5%)的交换数据为无用数据。为解决上述问题,提出Skipswap,一种面向托管式运行时的分离式内存数据通路。它基于托管式运行时与操作系统内核的协同机制,利用托管式运行时GC过程识别空闲页,并通过共享内存位图将页面空闲状态精确传递给内核,使内核能够在内存压力下直接释放空闲页,避免无效页面换出,从而弥合运行时与内核之间的语义隔阂,并实现高效的跨层语义传递。在generational Shenandoah、G1垃圾回收器和Fastswap分离式内存页交换系统上实现的Skipswap,相比未修改系统,吞吐量平均提升12.9%,并将内核态CPU时间和RDMA网络带宽分别平均降低17.6%和27.4%。

       

      Abstract: Managed languages, such as Java, Python, and Scala, are widely adopted in big data applications due to their enhanced development efficiency and security through automatic memory management via garbage collection (GC). With the rapid deployment of disaggregated memory architectures in data centers, existing operating system memory management systems have been iteratively updated, such as extending existing kernel paging systems to support data movement between local and remote memory in disaggregated memory architectures. However, analysis reveals that existing GC mechanisms in managed languages introduce a series of performance issues to the underlying disaggregated memory system, causing significant performance degradation for applications. This is because a program semantics gap exists between the managed language’s GC mechanism and the operating system’s disaggregated memory system, resulting in up to 50.0% (34.5% on average) of useless data moving between local and remote memory. To address this issue, this paper introduces Skipswap, a disaggregated memory data path developed for managed languages. Skipswap, through a managed runtime-kernel co-design, utilizes the garbage collection process in the managed runtime to identify idle pages, and accurately communicates idle page status to the kernel as a bitmap in shared memory. This enables the kernel to directly reclaim idle pages under memory pressure and avoid unnecessary page-outs, thereby bridging the semantic gap and achieving efficient runtime-kernel semantic communication. We implemented Skipswap in the generational Shenandoah and G1 garbage collectors and the Fastswap disaggregated memory page swapping system. Our evaluation demonstrates that, compared to the unmodified system, Skipswap improves throughput by 12.9% on average and reduces CPU resource consumption and RDMA network bandwidth overhead by 17.6% and 27.4% on average, respectively.

       

    /

    返回文章
    返回