🤖 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.