Das Unternehmen Microsoft Über die Erweiterung der Möglichkeiten der WSL2-Schicht (Windows Subsystem für Linux), die die Ausführung von Linux-Executables unter Windows ermöglicht. In experimentellen Builds (Build 19013) wurde in der WSL2-Schicht die Unterstützung für die Rückgabe von freigegebener Speicher (Memory Reclamation), der von Prozessen genutzt wird, die in einer Umgebung auf Linux-Kernel-Basis arbeiten, hinzugefügt.
Früher wurde im Falle eines Anstiegs des Speicherverbrauchs durch Anwendungen oder den Kernel der Speicher für die virtuelle Maschine WSL2 zugewiesen, blieb jedoch anschließend gebunden und wurde nicht an das System zurückgegeben, selbst nach Beendigung eines speicherintensiven Prozesses und bei Nichtbedarf an zugewiesenem Speicher. Der Mechanismus der Memory Reclamation ermöglicht die Rückgabe des freigegebenen Speichers an das Haupt-OS und reduziert automatisch die Größe des Speichers der virtuellen Maschine. Dabei wird nicht nur der Speicher zurückgegeben, der von Benutzerprozessen freigegeben wird, sondern auch der Speicher, der für das Caching im Linux-Kernel verwendet wurde. Beispielsweise erhöht sich bei hoher Festplattenaktivität die Größe des Seiten-Caches, in dem der Inhalt von Dateien bei der Arbeit des FS zwischengespeichert wird. Nach Ausführung von „echo 1 > /proc/sys/vm/drop_caches“ kann der Cache geleert und der Speicher an das Haupt-OS zurückgegeben werden.
Die Implementierung der Memory Reclamation basiert auf
, der von Intel-Ingenieuren vorgeschlagen wurde, um in den Hauptkernel von Linux aufgenommen zu werden, um die Möglichkeiten des virtio-balloon Treibers und des Speichermanagementsystems zu erweitern. Dieser Patch ist für den Einsatz in beliebigen Gastsystemen ausgelegt, um nicht verwendete Speicherseiten an das Hosts-System zurückzugeben und kann mit verschiedenen Hypervisoren angewendet werden. Im Fall von WSL2 wurde der Patch angepasst, um Speicher an den Hyper-V-Hypervisor zurückzugeben.
Erinnern wir uns daran, dass die zweite Version von WSL die Bereitstellung eines vollständigen Linux-Kernels anstelle eines Emulators umfasst, der Systemaufrufe von Linux in Windows-Systemaufrufe übersetzt. Der in WSL2 bereitgestellte basiert auf der Version 4.19, die in einer Windows-Umgebung mithilfe einer virtuellen Maschine ausgeführt wird, die bereits in Azure verwendet wird. Updates für den Linux-Kernel werden über den Windows Update-Mechanismus bereitgestellt und in der Infrastruktur für kontinuierliche Integration von Microsoft getestet. Die spezifischen für WSL2 verwendeten Patches im Kernel beinhalten Optimierungen zur Verkürzung der Kernelstartzeit, zur Verringerung des Speicherverbrauchs und dazu, im Kernel ein Minimum an Treibern und Subsystemen zu belassen.
Quelle: opennet.ru
