核心概念
GastCoCo 透過創新的圖儲存結構 CBList 和基於協程的預取技術,有效減少動態圖處理中的快取未命中,從而顯著提升圖計算和圖更新的效能。
摘要
論文綜述
本論文介紹了一種名為 GastCoCo 的動態圖處理系統,旨在解決動態圖處理中圖計算效率和圖更新效率之間的矛盾。GastCoCo 採用圖儲存和基於協程的預取協同設計,通過減少快取未命中來提升效能。
主要貢獻
- 提出了 CBList,一種專為動態圖處理設計的預取感知數據結構,它不僅提高了硬體預取的效率,還簡化了通過協程實現軟體預取的過程。
- 開發了一套混合預取策略,避免軟體和硬體預取重複獲取數據。
- 利用 C++20 堆疊式協程預取程式需要訪問的圖數據,通過減少快取未命中開銷,使圖計算和圖更新都能受益。
- 設計了一套適應不同圖任務的協程調度和任務分配策略,使使用軟體預取的圖處理在 GastCoCo 上表現更佳。
系統架構
GastCoCo 主要由三層組成:
- 儲存層:採用名為 CBList 的預取感知數據結構,該結構結合了小區塊和 B+ 樹,以平衡圖更新和圖計算的效率。
- 執行層:包括任務分配器、協程調度器和執行器。任務分配器將任務分解為多個子任務並分配給協程,協程調度器控制交錯執行和預取,執行器則根據調度策略執行計算任務。
- 適配層:包括系統配置探測器和執行策略調整器。它們利用預製程式探測當前任務和運行環境的最佳協程參數和最合適的執行和預取策略。
核心技術
- CBList:一種結合了小區塊和 B+ 樹的混合數據結構,用於儲存圖數據。小區塊用於儲存度數較低的頂點,而 B+ 樹用於儲存度數較高的頂點。這種設計可以在保證圖更新效率的同時,最大限度地提高圖計算的快取局部性。
- 基於協程的預取:利用 C++20 堆疊式協程實現軟體預取。通過在訪問數據之前預取數據,可以有效減少快取未命中。
- 混合預取策略:結合硬體預取和軟體預取,避免重複獲取數據。
- 協程調度和任務分配策略:根據不同的圖處理任務,採用不同的協程調度和任務分配策略,以最大限度地提高效能。
評估結果
實驗結果表明,GastCoCo 在圖更新和圖計算方面均優於現有的圖儲存系統。
總結
GastCoCo 是一個高效的動態圖處理系統,它通過圖儲存和基於協程的預取協同設計,有效減少了快取未命中,從而顯著提升了圖計算和圖更新的效能。
統計資料
GastCoCo 在圖更新方面比現有的圖儲存系統快 1.3 倍到 180 倍。
GastCoCo 在圖計算方面比現有的圖儲存系統快 1.4 倍到 41.1 倍。
引述
"An efficient data structure is fundamental to meeting the growing demands in dynamic graph processing."
"This paper presents GastCoCo, a system with graph storage and coroutine-based prefetch co-design."
"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."