社群網路開發團隊成員之一 Facebook, 羅曼·古欣,在開發者郵件列表中提出了一組 核心補丁 Linux旨在透過實施新的記憶體管理控制器來改進記憶體管理 - lab(slab記憶體控制器).
板坯分佈 記憶體管理機制旨在更有效率地分配記憶體並消除嚴重的記憶體碎片。該演算法的核心是保存已分配內存中特定類型物件的內存,並在下次分配相同類型的物件時重複使用該內存。此方法最初由 Jeff Bonwick 在 SunOS 中引入,現在已被廣泛應用於包括 FreeBSD 在內的許多 Unix 作業系統的核心中。 Linux.
新的控制器是基於將slab記帳從記憶體頁面級別移至核心物件級別,這使得在不同的cgroup中共享slab頁面成為可能,而不是為每個cgroup分配單獨的快取。
根據測試結果,可以得出結論,所提出的記憶體管理方法允許增加 效用 使用板 45%,並且還將減少作業系統核心的整體記憶體消耗。 而且,透過減少分配給slab的頁數,整體記憶體碎片也減少了,這不能不影響系統的效能。
新控制器已經在 Facebook 生產伺服器上進行了幾個月的測試,到目前為止,這次測試可以說是成功的:效能沒有損失,錯誤數量沒有增加,記憶體消耗明顯減少 - 在某些伺服器上伺服器高達1GB。 這個數字是相當主觀的,例如,早期的測試顯示結果略低:
- Web 前端 650-700 MB
- 有資料庫快取的伺服器上 750-800 MB
- DNS 伺服器上 700 MB
>>> GitHub 上的作者頁面
>>> 早期測試結果
來源: linux.org.ru
