WSL 2環境で、特定のディストリビューションだけに4GBのメモリ上限を設定したい。正しい方法はどれですか?
解説
.wslconfigはWSL 2の全ディストリビューションに共通で適用されるグローバル設定ファイルであり、特定のディストリビューションだけにメモリ上限を設けるような粒度の制御はサポートしていません。選択肢Aの方法ではすべてのWSL 2ディストリビューションに4GB制限がかかります。選択肢Bのwsl.confはディストリビューション固有の設定ファイルですが、メモリやCPUの割り当ては管轄外です。選択肢Dのようにディストリビューション名のセクションを作る構文は存在しません。.wslconfigとwsl.confの役割の違いWSLの設定は2つのファイルに分かれており、混同しやすいポイントです。.wslconfig: Windows側のC:\Users\<ユーザー名>\.wslconfigに置く。WSL 2の仮想マシン(Lightweight Utility VM)全体に作用するため、メモリ・CPU・スワップなどハードウェアリソースの制御はここで行うwsl.conf: 各ディストリビューション内の/etc/wsl.confに置く。ホスト名、自動マウントの挙動、デフォルトユーザーなど、そのディストリビューション固有のOS設定を記述するこの分離が生まれる理由は、WSL 2のアーキテクチャにあります。WSL 2は軽量なHyper-V仮想マシン上でLinuxカーネルを動かしており、複数のディストリビューションが同じVMのカーネルを共有します。メモリやCPUはVM単位で割り当てられるため、ディストリビューション単位での制御は構造上できません。.wslconfigの設定例と反映方法[wsl2] memory=4GB processors=2 swap=8GB localhostForwarding=true.wslconfigの変更を反映するには、PowerShellなどでwsl --shutdownを実行してVMを完全に停止させてから再起動する必要があります。ディストリビューションを単に閉じるだけでは、VMがバックグラウンドで動き続けている場合があり、設定が反映されません。実務でWSLのメモリ消費が問題になるケースは多く、デフォルトではホストマシンのメモリの50%または8GBの小さい方が割り当てられます。Docker Desktop(WSL 2バックエンド)と開発用ディストリビューションを同時に動かすとメモリが不足しがちなので、.wslconfigでの明示的な設定は開発環境構築の基本といえます。