一句话:提出运行时系统 Glign,通过三层遍历对齐提升并发图查询的数据局部性与处理性能。
并发图处理中,多个查询同时在图上执行并通过内存层次共享图访问;但不同查询,尤其起点不同者,遍历方式不同,遍历“错位”会严重削弱共享收益,且并发查询越多问题越严重。Glign 是自动对齐并发查询遍历的运行时系统,提供三层机制:迭代内对齐同步同一迭代中不同查询对图活跃部分的访问;迭代间对齐利用“重迭代”对齐不同查询的迭代;对齐感知批处理把共享潜力更高的查询分到同一批次。三者共同提升数据局部性。实验表明,Glign 相比 Krill 和 GraphM 平均分别快 3.6 倍和 4.7 倍。
In concurrent graph processing, different queries are evaluated on the same graph simultaneously, sharing the graph accesses via the memory hierarchy. However, different queries may traverse the graph differently, especially for those starting from different source vertices. When these graph traversals are ”misaligned”, the benefits of graph access sharing can be seriously compromised. As more concurrent queries are added to the evaluation batch, the issue tends to become even worse. To address the above issue, this work introduces Glign, a runtime system that automatically aligns the graph traversals for concurrent queries. Glign introduces three levels of graph traversal alignment for iterative evaluation of concurrent queries. First, it synchronizes the accesses of different queries to the active parts of the graph within each iteration of the evaluation—intra-iteration alignment. On top of that, Glign leverages a key insight regarding the “heavy iterations” in query evaluation to achieve inter-iteration alignment and alignment-aware batching. The former aligns the iterations of different queries to increase the graph access sharing, while the latter tries to group queries of better graph access sharing into the same evaluation batch. Together, these alignment techniques can substantially boost the data locality of concurrent query evaluation. Based on our experiments, Glign outperforms the state-of-the-art concurrent graph processing systems Krill and GraphM by 3.6× and 4.7× on average, respectively.