Facebook 的新記憶體管理方法

社群網路開發團隊成員之一 Facebook, 羅曼·古欣,在開發者郵件列表中提出了一組 Linux核心補丁旨在透過實施新的記憶體管理控制器來改進記憶體管理 - lab(slab記憶體控制器).

板坯分佈 是一種記憶體管理機制,旨在更有效地分配記憶體並消除大量碎片。 該演算法的基礎是儲存包含某種類型物件的已分配內存,並在下次為相同類型的物件分配該內存時重複使用該內存。 這項技術首先由 Jeff Bonwick 在 SunOS 中引入,現在廣泛應用於許多 Unix 作業系統的核心中,包括 FreeBSD 和 Linux。

新的控制器是基於將slab記帳從記憶體頁面級別移至核心物件級別,這使得在不同的cgroup中共享slab頁面成為可能,而不是為每個cgroup分配單獨的快取。

根據測試結果,可以得出結論,所提出的記憶體管理方法允許增加 效用 使用板 45%,並且還將減少作業系統核心的整體記憶體消耗。 而且,透過減少分配給slab的頁數,整體記憶體碎片也減少了,這不能不影響系統的效能。

新控制器已經在 Facebook 生產伺服器上進行了幾個月的測試,到目前為止,這次測試可以說是成功的:效能沒有損失,錯誤數量沒有增加,記憶體消耗明顯減少 - 在某些伺服器上伺服器高達1GB。 這個數字是相當主觀的,例如,早期的測試顯示結果略低:

  • Web 前端 650-700 MB
  • 有資料庫快取的伺服器上 750-800 MB
  • DNS 伺服器上 700 MB

>>> GitHub 上的作者頁面


>>> 早期測試結果

來源: linux.org.ru

添加評論