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 existing 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 introducing 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.3x - 180x in graph updates and 1.4x - 41.1x in graph computation.
翻译:高效的数据结构是满足动态图处理日益增长需求的基础。然而,图计算效率(需要连续结构)和图更新效率(需要类链表结构)的双重需求在图结构设计原则中存在冲突。通过对现有最先进的动态图结构进行实验研究,我们观察到缓存未命中的开销占据了图计算时间的主要部分。本文提出了GastCoCo,一个采用图存储与基于协程的预取协同设计的系统。通过利用无栈协程实现软件预取,并引入一种预取友好的数据结构CBList,GastCoCo显著缓解了由缓存未命中引起的性能下降。我们的实验结果表明,GastCoCo在图更新性能上超越现有最先进的图存储系统1.3倍至180倍,在图计算性能上超越1.4倍至41.1倍。