Společnost Microsoft o rozšíření možností vrstvy WSL2 (Windows Subsystem for Linux), která umožňuje spouštění spustitelných souborů Linuxu ve Windows. V experimentálních sestaveních (sestavení 19013) ve vrstvě WSL2 byla přidána podpora vracení paměti systému (Memory Reclamation), kterou uvolnily procesy běžící v prostředí založeném na jádře Linux.
Dříve v případě nárůstu spotřeby paměti aplikacemi nebo jádrem byla paměť přidělena virtuální stroji WSL2, ale po tom zůstávala zafixována a nebyla vrácena systému, ani po skončení procesů s vysokou spotřebou zdrojů a absenci další potřeby po přidělené paměti. Mechanismus Memory Reclamation umožňuje vracet uvolněnou paměť zpět do hlavního OS a automaticky snižovat velikost paměti virtuálního stroje. V tomto procesu se vrací nejen paměť uvolňovaná uživatelskými procesy, ale také paměť, která byla použita pro ukládání do vyrovnávací paměti v jádře Linux. Například při vysoké diskové aktivitě se zvyšuje velikost stránkovacího cache, do kterého se ukládá obsah souborů během operací FS. Po provedení „echo 1 > /proc/sys/vm/drop_caches“ lze cache vymazat a vrátit paměť do hlavního OS.
Implementace Memory Reclamation se zakládá na
, který navrhli inženýři Intel pro zařazení do hlavního jádra Linux s cílem rozšířit možnosti ovladače virtio-balloon a pro systém správy paměti. Tento patch je určen pro použití v jakýchkoli hostovaných systémech pro vracení nevyužívaných stránek paměti hostitelskému systému a může být použit s různými hypervizory. V případě WSL2 byl patch přizpůsoben pro vracení paměti hypervizoru Hyper-V.
Připomeňme, že druhá verze WSL přináší plnohodnotné jádro Linux místo emulátoru, který na rozhraní převádí systémové volání Linuxu na systémová volání Windows. Dodávané v WSL2 je založeno na vydání 4.19, které běží v prostředí Windows pomocí virtuálního stroje již používaného v Azure. Aktualizace pro jádro Linux jsou doručovány prostřednictvím mechanismu Windows Update a testovány v infrastruktuře kontinuální integrace Microsoftu. V jádru použité specifické pro WSL2 patche zahrnují optimalizace pro zkrácení času spuštění jádra, snížení spotřeby paměti a ponechání v jádře minimálně potřebného souboru ovladačů a subsystémů.
Zdroj: opennet.ru
