Dynamic graphs, featuring continuously updated vertices and edges, have grown in importance for numerous real-world applications. To accommodate this, graph frameworks, particularly their internal data structures, must support both persistent graph updates and rapid graph analysis simultaneously, leading to complex designs to orchestrate `fast but volatile' and `persistent but slow' storage devices. Emerging persistent memory technologies, such as Optane DCPMM, offer a promising alternative to simplify the designs by providing data persistence, low latency, and high IOPS together. In light of this, we propose DGAP, a framework for efficient dynamic graph analysis on persistent memory. Unlike traditional dynamic graph frameworks, which combine multiple graph data structures (e.g., edge list or adjacency list) to achieve the required performance, DGAP utilizes a single mutable Compressed Sparse Row (CSR) graph structure with new designs for persistent memory to construct the framework. Specifically, DGAP introduces a \textit{per-section edge log} to reduce write amplification on persistent memory; a \textit{per-thread undo log} to enable high-performance, crash-consistent rebalancing operations; and a data placement schema to minimize in-place updates on persistent memory. Our extensive evaluation results demonstrate that DGAP can achieve up to $3.2\times$ better graph update performance and up to $3.77\times$ better graph analysis performance compared to state-of-the-art dynamic graph frameworks for persistent memory, such as XPGraph, LLAMA, and GraphOne.
翻译:动态图因其顶点和边持续更新的特性,在众多实际应用中日益重要。为此,图框架(尤其是其内部数据结构)必须同时支持持久化的图更新与快速的图分析,这导致需要复杂的设计来协调“快速易失性”与“持久低速”的存储设备。新兴的持久内存技术(如Optane DCPMM)通过同时提供数据持久性、低延迟和高IOPS,为简化设计提供了有前景的替代方案。基于此,我们提出DGAP——一个基于持久内存的高效动态图分析框架。与传统动态图框架需组合多种图数据结构(如边列表或邻接表)以达成所需性能不同,DGAP利用单一的可变压缩稀疏行(CSR)图结构,并针对持久内存采用全新设计来构建框架。具体而言,DGAP引入了一种**逐段边日志**以减少持久内存上的写放大;一种**逐线程撤销日志**以实现高性能、崩溃一致性重平衡操作;以及一种数据放置模式以最小化持久内存上的原地更新。我们的广泛评估结果表明,与XPGraph、LLAMA及GraphOne等当前最先进的持久内存动态图框架相比,DGAP的图更新性能最高可提升$3.2\times$,图分析性能最高可提升$3.77\times$。