高级检索

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

    Skipswap: High Performance Far Memory Data Path via Managed Runtime-Aware Page Management

    • 摘要: 托管式语言,如Java、Python、Scala等,通过垃圾回收机制(Garbage Collection, GC)来进行自动内存管理,从而提高了应用开发效率和安全性,因此在大数据应用中被广泛应用。随着解耦合内存架构在数据中心的快速部署,现有的操作系统的内存管理系统也跟随进行了迭代,例如扩展现有的内存页交换系统(Kernel Paging),以便支持数据在解耦合内存架构的本地内存和远端内存之间移动。然而,通过分析发现,托管式语言的现有垃圾回收机制给底层解耦合内存系统带来了一系列性能问题,给应用造成了显著的性能下降。这是由于,托管式语言的垃圾回收机制和操作系统中的解耦合内存系统中存在程序语义隔阂(Program Semantics Gap),造成了高达50%(均34.5%)的无用数据在本地内存和远端内存中移动。 针对该问题,本文提出了Skipswap,一种针对托管式语言开发的,解耦合内存数据通路。Skipswap基于托管式运行时与操作系统内核的协同机制,利用托管式运行时的垃圾回收过程识别空闲页,通过共享内存位图向内核精确传达空闲页状态,使内核在内存压力下能直接释放空闲页面,避免无效的页面换出,从而打破语义壁垒,并实现高效的运行时-内核语义互通。我们在Generational Shenandoah和G1垃圾回收器和Fastswap解耦合内存页交换系统上实现了Skipswap,相比未修改系统平均提升了12.9%的吞吐,平均降低了17.6%和27.4%的CPU资源和RDMA网络带宽开销。

       

      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, compared to the unmodified system.

       

    /

    返回文章
    返回