Facebook為Linux核心提出了新的slab記憶體管理機制

羅曼古希欽(羅曼·古欣)來自臉書 опубликовал Linux 核心開發人員的郵件列表中包含一組實作新記憶體分配控制器的補丁 平板 (板內存控制器)。 新控制器的顯著之處在於將slab記帳從記憶體頁面級別移動到核心物件級別,這使得在不同cgroup中共享slab頁面成為可能,而不是為每個cgroup分配單獨的slab快取。

所提出的方法可以提高slab的使用效率,將slab使用的記憶體大小減少30-45%,並顯著降低核心的整體記憶體消耗。 透過減少不可移動板的數量,對於減少記憶體碎片也有積極的作用。 新的記憶體控制器顯著簡化了計算slab的程式碼,並且不需要使用複雜的演算法來動態建立和刪除每個cgroup的slab快取。 新實作中的所有記憶體cgroup都使用一組通用的slab緩存,而slab快取的生命週期不再與透過cgroup安裝的快取的生命週期相關聯 限制 關於記憶體使用情況。

新的slab控制器中實現的更準確的資源統計理論上應該會為CPU帶來更多的負載,但實際上差異並不顯著。 特別是,新的平板控制器已經在處理不同類型工作負載的 Facebook 生產伺服器上使用了幾個月,並且尚未發現明顯的回歸。 同時,內存消耗顯著減少 - 在某些主機上可以節省高達 1GB 的內存,但該指標很大程度上取決於負載的性質、RAM 的總大小、CPU 的數量以及使用記憶的特徵。 之前的測試 顯示 Web 前端的記憶體消耗減少了650-700 MB(slab 記憶體的42%),具有DBMS 快取的伺服器上的記憶體消耗減少了750-800 MB(35%),DNS 伺服器上的記憶體消耗減少了700 MB( 36%)。

來源: opennet.ru

添加評論