ナレッジベース →5 分で読めます更新日: 2026-09-21

Windows 11でWSL2のメモリとCPU使用量を制限する方法

WSL2はLinuxをWindowsの隣で動かすのではなく、軽量なユーティリティVMの中で動かしており、タスク マネージャーはそのVMをVmmemプロセスとして表示します。現在のWindows 11ビルドでは、このVMはRAMの50%(旧ビルドでは80%)まで膨らみ、論理プロセッサの半分を取る可能性があり、Linuxは与えられたものを遠慮なく使い切ります。解決策はユーザープロファイルフォルダーに置く.wslconfigというテキストファイルです。memory=6GBやprocessors=4のような数行で上限を固定し、wsl --shutdownを1回実行すれば変更が反映されます。

VmmemがRAMを食う理由と.wslconfigの役割

WSL2は、Linuxが解放したメモリをWindowsに返さずページキャッシュとして保持します。そのため、ディストリビューション内のプログラムをすべて閉じても、大きなビルドの後のVmmemは巨大なままです。これはカーネルの正常な動作であってリークではありませんが、ディストリビューションがブラウザーやIDE、他のVMとマシンを共有するなら、上限は明文化しておくべきです。デフォルトの50%はマシンが空だった時代の理屈で、5つの強欲なアプリが同居する16 GBのマシンでは単純に多すぎます。

ハンドルは%UserProfile%\.wslconfigで、VMの起動時に一度だけ読み込まれます。編集のたびにwsl --shutdownが必要なのはこのためです。制限はすべてのディストリビューションに一括で適用され、このファイルではディストリビューションごとの上限は設定できません。対象はWSL2だけです。第1世代はLinuxのシステムコールをWindows自身の中で処理するため、VMもVmmemも存在せず、制限するものがありません。

  • memory=6GB — VM全体、つまり全ディストリビューション合計のRAM上限
  • processors=4 — WSL2に見せる論理CPUコアの数
  • swap=4GB — WSL2が頼れるLinuxスワップファイルのサイズ(既定:RAMの25%、上限8 GB)
  • autoMemoryReclaim=gradual — 解放されたLinuxメモリをWindowsに返す実験的オプション(WSL 1.3.10以降)
  • sparseVhd=true — ファイル削除時にext4.vhdxディスクが縮小できるようになる実験的オプション

上限を設定する手順

メモ帳を開き、セクション見出しの[wsl2]を貼り付け、その下にmemory=6GB、processors=4、swap=4GBの各行を書いて、%UserProfile%\.wslconfigという名前で保存します。保存ダイアログでは「ファイルの種類」を「すべてのファイル (*.*)」に、エンコードをUTF-8にしてください。この設定をしないと、Windowsは黙って.wslconfig.txtを作り、WSLはそれを永遠に読みません。memory=6のように単位のない値はバイトとして解釈されるため、GBの接尾辞は飾りではなく必須です。

PowerShellかWindowsターミナルを開いてwsl --shutdownを実行し、10秒ほど待ってからディストリビューションを起動し直します。Linux内でfree -hを実行すると、物理RAMの全体ではなく上限値が表示され、nprocは許可したコア数を出力します。wsl --versionが1.3.10以降を示すなら、[wsl2]ブロックの下にautoMemoryReclaim=gradualとsparseVhd=trueを書いた[experimental]セクションを追加して、もう一度シャットダウンします。古いWSLでは、まず管理者権限のプロンプトからwsl --updateを実行してください。

数値を見直すタイミング

いつもの作業を1週間、タスク マネージャーでVmmemを観察しましょう。ブラウジングや軽いコンテナーなら4〜6 GBで十分ですが、重いDockerビルドや大規模なJavaScriptツールチェーンは8 GB以上を正直に要求します。memory=は一気にではなく2 GB刻みで動かし、RAMが16 GB以下のマシンでは物理メモリの少なくとも半分はWindowsに残してください。ディストリビューションを置いたディスクが増え続けるなら、sparseVhd=trueでext4.vhdxの一方的な肥大化を止められます。Windowsの機能更新のたびに再確認を。WSLパッケージが置き換えられ、挙動が変わることがあるからです。

よくある質問

WSL2にどれだけのメモリを与えるべきですか?

16 GBのマシンなら、日常の開発は6 GBで余裕を持ってカバーできます。合計8 GBのRAMなら4 GBにとどめ、Windowsがスワップし始めないようにしましょう。上限は少しずつ、ビルドが実際にメモリ不足で失敗するときにだけ引き上げます。

Linux内のすべてを閉じてもVmmemが大きいままなのはなぜですか?

カーネルは解放されたメモリをページキャッシュとして保持し、自発的にはWindowsに返さないためです。1日の終わりにwsl --shutdownを実行するか、WSL 1.3.10以降でautoMemoryReclaim=gradualを有効にすれば、未使用のメモリが自動的に戻ります。

.wslconfigはWSL1のディストリビューションにも効きますか?

効きません。WSL1はLinuxのシステムコールをWindows自身の中で変換するため、VMもVmmemも制限対象も存在しません。上限を付けたいなら、まずwsl --set-version <name> 2でディストリビューションを変換してください。

購入前にライセンスの内容をご確認ください。

一度限りの 30 分試用では基本ツールを利用できます。PRO 機能は有料ライセンスを有効にするまでロックされています。

次に読む記事

すべての記事 · よくある質問

お問い合わせ: [email protected]