Facebook推出TMO機制,讓你節省伺服器20-32%的內存

Facebook(在俄羅斯聯邦被禁止)的工程師發布了一份關於去年實施TMO(透明內存卸載)技術的報告,該技術通過將工作不需要的輔助數據替換為更便宜的驅動器(例如NVMe),可以顯著節省伺服器上的RAM SSD 磁碟。 Facebook 估計,使用 TMO 可以在每台伺服器上節省 20% 到 32% 的 RAM。該解決方案設計用於應用程式在隔離容器中運行的基礎架構。 TMO 的核心端元件已包含在 Linux 核心中。

在 Linux 核心方面,該技術由 PSI(壓力失速資訊)子系統支持,從版本 4.20 開始可用。 PSI 已用於各種低記憶體處理程序中,並允許您分析有關獲取各種資源(CPU、記憶體、I/O)的等待時間的資訊。借助 PSI,用戶空間處理器可以更準確地評估系統負載等級和減速模式,從而可以在異常對效能產生明顯影響之前及早發現異常。

在使用者空間中,TMO 由 Senpai 元件提供,該元件透過 cgroup2 根據從 PSI 接收的資料動態調整應用程式容器的記憶體限制。 Senpai 透過PSI 分析資源短缺開始的跡象,評估應用程式對記憶體存取速度減慢的敏感度,並嘗試確定容器所需的最小記憶體大小,在該大小下操作所需的資料保留在RAM 中,以及伴隨的檔案快取中的資料或目前不直接使用的資料將被強制移至交換分區。

Facebook推出TMO機制,讓你節省伺服器20-32%的內存

因此,TMO 的本質是嚴格控制進程的記憶體消耗,強制交換未使用的記憶體頁面,這些頁面的驅逐不會明顯影響效能(例如,僅在初始化期間使用程式碼的頁面,以及一次性使用的頁面)。磁碟快取中的資料)。與響應記憶體壓力而將資訊逐出交換分區不同,在 TMO 中,資料是根據主動預測逐出的。

驅逐的標準之一是 5 分鐘內沒有存取記憶體頁面。此類頁面稱為冷記憶體頁面,平均約佔應用程式記憶體的 35%(根據應用程式的類型,範圍從 19% 到 65%)。搶佔考慮與匿名記憶體頁(由應用程式分配的記憶體)和用於檔案快取的記憶體(由核心分配)相關的活動。在某些應用程式中,主要消耗是匿名內存,但在其他應用程式中,檔案快取也很重要。為了避免快取逐出不平衡,TMO 使用新的分頁演算法,按比例逐出匿名頁面和與檔案快取關聯的頁面。

將不常用的頁面推送到速度較慢的記憶體中不會對效能產生重大影響,但可以顯著降低硬體成本。資料被刷新到 SSD 驅動器或 RAM 中的壓縮交換區域。就儲存一個位元組資料的成本而言,使用 NVMe SSD 比在 RAM 中使用壓縮便宜多達 10 倍。

Facebook推出TMO機制,讓你節省伺服器20-32%的內存


來源: opennet.ru

添加評論