Facebook工程師透露, 通過報告,引進技術 TMO (透明內存卸載)去年,其中 允許顯著節省服務器上的 RAM 通過移動不需要在 NVMe SSD 等更便宜的驅動器上運行的輔助數據。
Facebook 估計 TMO 在每台服務器上節省了 20% 到 32% 的 RAM。 該解決方案設計用於應用程序在隔離容器中運行的基礎架構。 TMO 的內核端組件 它們已經包含在 Linux 內核中。
在 Linux 內核端,操作 技術的 由 PSI 子系統提供 (壓力失速信息),自 4.20 版起提供。
PSI 已在各種內存不足驅動程序中使用 並允許分析各種資源(CPU、內存、I/O)的等待時間信息。 借助 PSI,用戶空間處理器可以更準確地評估系統負載和減速模式,從而在異常對性能產生明顯影響之前對其進行檢測。
在用戶空間中,Senpai 組件運行 TMO,它根據從 PSI 接收到的數據,通過 cgroup2 動態調整應用程序容器的內存限制。
Senpai分析資源短缺的跡象 通過 PSI,評估應用程序對緩慢內存訪問的敏感性和 嘗試確定所需的最小內存大小 對於容器,其中作業所需的數據保留在 RAM 中,而相關數據一直位於文件緩存中或當前未直接使用,將被強制輸出到交換分區。
透明內存卸載 (TMO) 是 Meta 針對異構數據中心環境的解決方案。 它引入了一種新的 Linux 內核機制,可以實時測量由於 CPU、內存和 I/O 資源短缺而導致的工作損失。 在此信息的指導下,在沒有任何應用程序先驗知識的情況下,TMO 會自動調整內存量以卸載到異構設備,例如壓縮內存或 SSD。 它根據設備的性能特徵和應用程序對較慢內存訪問的敏感性來執行此操作。
因此, TMO 的本質是在內存消耗方面保持進程“嚴格節食”,強制將未使用的內存頁面移動到交換分區,刪除它不會顯著影響性能(例如,僅在初始化期間使用代碼的頁面和緩存在磁盤上的一次性數據)。 與響應低內存將信息刷新到交換分區不同,TMO 基於預測性預測刷新數據。
在 5 分鐘內沒有訪問內存頁面被用作偏好的標準之一。 這些頁面稱為冷頁面,平均而言,它們占應用程序內存的 35% 左右(根據應用程序的類型,有 19% 到 65% 的變化)。
該首選項考慮了與匿名內存頁面(由應用程序分配的內存)和用於文件緩存的內存(由內核分配)相關的活動。 在某些應用程序中,匿名內存是主要消耗,但在其他應用程序中,文件緩存也非常重要。
為避免在將內存刷新到緩存時出現不平衡,TMO 使用一種新的分頁算法,按比例刷新匿名頁面和與文件緩存關聯的頁面。
將不經常使用的頁面推送到較慢的內存不會對性能產生巨大影響,但可以顯著降低硬件成本。 數據被發送到 SSD 或 RAM 中的壓縮交換空間。 以存儲一字節數據為代價,使用 NVMe SSD 比在 RAM 上使用壓縮便宜 10 倍。
最後,如果你有興趣了解更多,可以諮詢詳情 在下面的鏈接.
這可以在具有普通應用程序的普通計算機中使用嗎?