GastCoCo: Graph Storage and Coroutine-Based Prefetch Co-Design for Dynamic Graph Processing

📅 2023-12-22
🏛️ Proceedings of the VLDB Endowment
📈 Citations: 2
Influential: 0
📄 PDF
🤖 AI Summary
Dynamic graph processing faces a fundamental trade-off between computational efficiency—requiring contiguous memory layouts—and update efficiency—necessitating pointer-based, mutable structures—while cache misses dominate performance bottlenecks. To address this, we propose CBList, a prefetch-friendly dynamic graph storage structure, and pioneer the integration of stackless coroutines into graph traversal to enable fine-grained, low-overhead software prefetching. By tightly co-designing CBList’s memory layout with coroutine-driven prefetching, our approach simultaneously achieves high spatial locality and structural mutability. Experimental evaluation demonstrates 1.3×–180× speedup in graph updates and 1.4×–41.1× speedup in graph computation over state-of-the-art dynamic graph systems. Our core contribution is the first systematic co-design paradigm unifying storage structure and coroutine-based prefetching, establishing a novel, cache-aware methodology for dynamic graph processing.
📝 Abstract
An efficient data structure is fundamental to meeting the growing demands in dynamic graph processing. However, the dual requirements for graph computation efficiency (with contiguous structures) and graph update efficiency (with linked list-like structures) present a conflict in the design principles of graph structures. After experimental studies of state-of-the-art dynamic graph structures, we observe that the overhead of cache misses accounts for a major portion of the graph computation time. This paper presents GastCoCo, a system with graph storage and coroutine-based prefetch co-design. By employing software prefetching via stackless coroutines and designing a prefetch-friendly data structure CBList, GastCoCo significantly alleviates the performance degradation caused by cache misses. Our results show that GastCoCo outperforms state-of-the-art graph storage systems by 1.3× - 180× in graph updates and 1.4× - 41.1× in graph computation.
Problem

Research questions and friction points this paper is trying to address.

Resolving conflict between computation and update efficiency in dynamic graphs
Reducing cache miss overhead in dynamic graph processing
Co-designing storage and prefetch for better graph performance
Innovation

Methods, ideas, or system contributions that make the work stand out.

Co-design of graph storage and coroutine prefetching
Uses stackless coroutines for software prefetching
Introduces prefetch-friendly CBList data structure
🔎 Similar Papers
No similar papers found.