COSCUP 2023

實作高效記憶體配置器
2023-07-29, 11:30–12:00 (Asia/Taipei), TR 213
Language: Traditional Chinese (Taiwan)

本內容旨在實作高效記憶體配置器,針對多核系統提升性能。我們使用了 lock-free 設計和 atomic 操作進行記憶體配置,解決 lock 競爭問題。同時,透過 MADV_POPULATE 機制降低 page fault 次數,提高系統效能。

在 X86-64 與 Arm64 主機上的測試結果顯示配置器的可擴展性和效能優勢。這些優化技術和測試結果將提升記憶體配置效率,增強系統性能和可靠性。


本內容的目標是開發一個高效的記憶體配置器,以提升多核系統的效能和性能,我們選用開源的 rpmalloc 作為範本並且加以改進 。在多核環境中,lock 競爭是一個常見且嚴重的問題,可能導致系統效能下降。為了解決這個問題,我們使用了 lock-free 設計,以減少或避免 lock 競爭的情況。這種設計方式利用 atomic 操作,允許多個執行緒同時存取記憶體進行配置,從而提高系統的併行性和效能。

此外,我們也著重在大量記憶體配置時的 page fault 問題。頻繁的 page fault 可能導致系統效能下降。為了解決這個問題,我們運用 MADV_POPULATE 的系統呼叫機制,在進行記憶體配置之前,提前將記憶體映射到實體頁面,減少後續的 page fault,以提高系統的效能和響應速度。

此外,我們在 Arm64 主機上進行了測試,以確保記憶體配置器的最佳化和改進在該架構下能正常運行。Arm64 主機廣泛應用於行動和嵌入式系統,因此在這個平台上進行測試能確保記憶體配置器在不同硬體環境下的性能和可擴展性。

總結而言,本篇提出了一種以無鎖設計為基礎的高效記憶體配置器 rpmalloc 原理與改進方法,同時運用 madvice 中的 MADV_POPULATE 機制減少 page fault。通過在 X86-64 與 Arm64 主機上測試,我們驗證了這些方法在不同環境下的性能和可靠性。這些方法和測試結果將有助於提升系統的記憶體配置效能,提供更好的性能和可擴展性。


Difficulty

入門

Target Audience

系統開發者、軟體工程師、開源社區和研發團隊

嗨 我是來自於台灣的王漢祺,目前是一名碩士生
對系統軟體開發有興趣!