たくさん マイクロソフトの開発者は、WSL2レイヤーの拡張を発表しました (Windows Subsystem for Linux)Windows Insider Experimentalビルド(ビルド19013)。 これらの中で彼らはそれを発表します 互換性が追加されました メモリシステムを返す(メモリの再利用)、Linuxカーネルベースの環境で実行されているプロセスによってリリースされます。
以前は、メモリ消費量が多い場合 アプリケーションまたはカーネル、メモリによって WSL2仮想マシンに割り当てられましたが、その後は修正されたままで、システムに戻りませんでした。 リソースを大量に消費するプロセスが完了し、割り当てられたメモリの必要性が高まっていない場合でも。
WSL 2のメモリ再利用により、Linuxのメモリが不要になったときに、ホストに解放される場所を通知して、WSL 2VMのメモリサイズを削減できるようになりました。
メモリ再利用メカニズムにより、解放されたメモリをメインオペレーティングシステムに戻すことができます 仮想マシンのメモリサイズを自動的に削減します。 この場合、ユーザープロセスによって解放されたメモリだけでなく、Linuxカーネルでのキャッシュに使用されたメモリも返されます。
Linux仮想マシンでメモリを使用するのはユーザープロセスだけではありません。 Linuxカーネルは、ファイルシステムのパフォーマンスを向上させるためにファイルコンテンツを格納するページキャッシュなど、多くのキャッシュも使用します。 これがどのように機能するかを確認するために、もうXNUMXつの実際の例を見てみましょう。
例えば ディスクアクティビティが多いと、ページキャッシュサイズが増加します。 FSの操作中にファイルの内容が確定します。 「echo1> / proc / sys / vm / drop_caches」を実行した後、キャッシュをクリアして、メモリをメインオペレーティングシステムに戻すことができます。
メモリ再利用の実装は、virtio-balloonドライバーとメモリ管理システムの機能を拡張するためにメインのLinuxカーネルに含めるためにIntelエンジニアによって提案されたパッチに基づいています。
この機能は、Linuxカーネルパッチによって駆動されます。これにより、メモリの小さな連続ブロックを、Linuxゲストで不要になったときにホストマシンに戻すことができます。 このパッチを含めるようにWSL2のLinuxカーネルを更新し、このページレポート機能をサポートするようにHyper-Vを変更しました。
指定されたパッチは、すべてのゲストシステムで使用するように設計されています 未使用のメモリページをホストシステムに返し、複数のハイパーバイザーで使用できます。 WSL2の場合、 パッチは、メモリをHyper-Vハイパーバイザーに戻すように調整されています。
覚えておくことが重要です WSLの第XNUMX版は、エミュレーターではなく完全なLinuxカーネルを提供する点で異なります。 LinuxシステムコールをWindowsシステムコールに変換するオンザフライ。
WSL 2は、アーキテクチャの新しいバージョンです。eは、Linux用のWindowsサブシステムがWindows上でLinuxELF64バイナリを実行できるようにします。。 この新しいバージョンのWSL2は、Hyper-V機能を使用して、最小限のLinuxカーネルで軽量の仮想マシンを作成します。
WSL2で提供されるLinuxカーネルは、バージョン4.19に基づいており、Azureで既に使用されている仮想マシンを使用してWindows環境で実行されます。 Linuxカーネルの更新は、Windows Updateエンジンを介して配信され、Microsoftの継続的インテグレーションインフラストラクチャでテストされます。
カーネルで使用されるWSL2固有のパッチには、カーネルの起動時間を短縮し、メモリ消費を削減し、必要最小限のドライバーとサブシステムのセットをカーネルに残すための最適化が含まれています。
あなたがそれについてもっと詳しく知りたいなら 元の投稿でそれらをチェックすることができます。 リンクはこちらです。