一句话:TeraHeap 通过扩展 JVM 在闪存上建立第二堆,消除大数据框架对象的序列化/反序列化与 GC 扫描开销,缓解 DRAM 压力。
Spark、Giraph 等大数据框架需缓存可能超出托管堆的数据集,常将长生命周期对象移到快速存储,导致高序列化/反序列化开销和对象移回时的内存压力。TeraHeap 扩展 JVM,在快速存储上建立第二高容量堆 H2,并用提示接口让框架填充 H2;它阻止 GC 扫描 H2 对象,同时维持单一托管堆抽象和内存安全。作者在 OpenJDK8/17 实现,并用 Spark、Giraph 上 15 个应用评估:相同 DRAM 下性能最高提升 73%/28%,可少用最多 4.6×/1.2× DRAM;在 Neo4j GDS 上提升 26%,并比 Panthera 高 69%。
Big data analytics frameworks, such as Spark and Giraph, need to process and cache massive datasets that do not always fit on the managed heap. Therefore, frameworks temporarily move long-lived objects outside the heap (off-heap) on a fast storage device. However, this practice results in (1) high serialization/deserialization (S/D) cost and (2) high memory pressure when off-heap objects are moved back for processing. In this article, we propose TeraHeap , a system that eliminates S/D overhead and expensive GC scans for a large portion of objects in analytics frameworks. TeraHeap relies on three concepts: (1) It eliminates S/D by extending the managed runtime (JVM) to use a second high-capacity heap (H2) over a fast storage device. (2) It offers a simple hint-based interface, allowing analytics frameworks to leverage object knowledge to populate H2. (3) It reduces GC cost by fencing the collector from scanning H2 objects while maintaining the illusion of a single managed heap, ensuring memory safety. We implement TeraHeap in OpenJDK8 and OpenJDK17 and evaluate it with fifteen widely used applications in two real-world big data frameworks, Spark and Giraph. We find that for the same DRAM size, TeraHeap improves performance by up to 73% and 28% compared to native Spark and Giraph. Also, it can still provide better performance by consuming up to \(4.6\times\) and \(1.2\times\) less DRAM than native Spark and Giraph, respectively. TeraHeap can also be used for in-memory frameworks and applying it to the Neo4j Graph Data Science library improves its performance by up to 26%. Finally, it outperforms Panthera, a state-of-the-art garbage collector for hybrid DRAM-NVM memories, by up to 69%.
@article{paperbot2669,
title = {<i>TeraHeap</i>
: Exploiting Flash Storage for Mitigating DRAM Pressure in Managed Big Data Frameworks},
author = {Iacovos G. Kolokasis and Giannos Evdorou and Shoaib Akram and Christos Kozanitis and Anastasios Papagiannis and Foivos S. Zakkak and Polyvios Pratikakis and Angelos Bilas},
journal = {ACM Transactions on Programming Languages and Systems},
volume = {46},
number = {4},
year = {2024},
doi = {10.1145/3700593}
}