微軟在WSL2(Windows Subsystem for Linux)中實作了記憶體歸還給系統

微軟公司 宣布了 關於擴充 WSL2(Linux 的 Windows 子系統)層的功能,請確保在 Windows 上啟動 Linux 執行檔。 在實驗版本中 窗戶內幕 (build 19013) 在 WSL2 層,出現了對基於 Linux 核心的環境中運行的進程釋放的記憶體返回系統的支援(Memory Reclamation)。

以前,如果應用程式或核心的記憶體消耗增加,記憶體會分配給 WSL2 虛擬機,但此後記憶體仍保持固定狀態,不會返回系統,即使在資源密集型進程終止後也是如此。不再需要分配的內存。 記憶體回收機制可讓您將釋放的記憶體返回到主作業系統,並自動減少虛擬機器記憶體的大小。 這不僅返回用戶進程釋放的內存,還返回 Linux 核心中用於緩存的內存。 例如,當磁碟活動較高時,頁面快取的大小會增加,檔案系統執行時檔案的內容會儲存在頁面快取中。 執行「echo 1 > /proc/sys/vm/drop_caches」後,可以清除快取並將記憶體返回到主作業系統。

記憶體回收的實作基於
修補,由英特爾工程師提議包含在主 Linux 核心中,以擴展 virtio-balloon 驅動程式和記憶體管理系統的功能。 指定的修補程式設計用於任何來賓系統,以將未使用的記憶體頁面返回主機系統,並且可以與各種虛擬機器管理程式一起使用。 對於 WSL2,該補丁適用於將記憶體傳回給 Hyper-V 管理程式。

回想一下 WSL 第二版 不同 提供成熟的 Linux 內核,而不是即時將 Linux 系統呼叫轉換為 Windows 系統呼叫的模擬器。 在 WSL2 中交付 Linux核心 基於版本 4.19,它使用已在 Azure 中執行的虛擬機器在 Windows 環境中執行。 Linux 核心的更新透過 Windows 更新機制提供,並針對 Microsoft 的持續整合基礎架構進行測試。 WSL2 特定的核心補丁包括最佳化,以減少核心啟動時間、減少記憶體消耗,並為核心保留所需的最少驅動程式和子系統集。

來源: opennet.ru

添加評論