WSL2の仮想環境のスペックを調整する
はじめに
Claude CodeをWindows上のWSL2で試し始めた人なら、最初は驚くほどスムーズに動作することに満足すると思います。実際、私も以下のZenn記事(外部リンク)を参考に、WindowsのWSL2にClaude Sourceを構築するところまではすんなり進みました。
ところが、実際にClaude Sourceを動かしながら細かい処理をしていると、画像処理なことを今後する予定、CPU使用率が常に高く、RAMの割当も頭打ちになっていることに気づきました。私のように少し重めのプロンプト処理やAIツールのローカル実行に挑戦する人にとって、デフォルトのWSL2では少々物足らないかと思いました。
この記事では、そんなWSL2のスペック制限を .wslconfig
という構成ファイルを使って緩和しました。
スペック変更のBefore / After
現在の私の環境はこちらから参照できます
https://zenn.dev/harieshokunin/articles/3aca5170f9ee8a
CPU(Ryzen 7 7700)
メモリ(DDR5-5600 32GB)
M.2 SSD(Gen4 NVMe)
.wslconfig
を導入することで、WSL2に割り当てられるリソースを明示的に指定できるようになります。以下は、設定前後で実際に nproc
, free -h
, swapon --show
を用いて取得したスペックの比較です。
項目 | 設定前(Before) | 設定後(After) |
---|---|---|
CPUコア数 | 16コア(全体自動) | 12コアに固定 |
メモリ | 15GiB(動的割当) | 19GiB(20GB指定に相当) |
スワップ | 4.0GiB(既定) | 8.0GiBに増加 |
特に効果を実感したのは、nproc
コマンドによるコア数制御と、free -h
によるメモリ上限の反映です。画像生成や大規模なLLMプロンプト処理を行う際でも、安定したリソース配分で処理が止まりにくくなりました。
実際の設定ファイルと反映手順
スペック変更は、Windowsユーザーのホームディレクトリ(例:C:\Users\yourname
)に .wslconfig
というファイルを作成することで実現できます。以下は、今回実際に使用した設定内容です:
[wsl2]
memory=20GB # Allocate 20GB of RAM to WSL
processors=12 # Assign 12 CPU threads to WSL (out of 16)
swap=8GB # Enable 8GB of swap (faster on SSD)
localhostForwarding=true # Allow localhost port forwarding to Windows
設定を反映するには、PowerShellで以下を順に実行してください:
wsl --shutdown
wsl -d Ubuntu-22.04
その後、Ubuntu内で以下のコマンドを実行して反映を確認します:
nproc # ← 12 が表示されれば成功
free -h # ← "total" が約19GiB(≒20GB)なら成功
swapon --show # ← swap が 8.0GiB になっていれば成功
.wslconfig
の構文はINI形式であるため、コメントには日本語ではなく英語を使うことを推奨します。日本語コメントは文字化けや読み取りエラーの原因になります。
まとめ
ClaudeのようなAIツールをWSL2で快適に使いたい場合、.wslconfig
によるスペック制御は手軽で効果的な方法です。CPUやメモリの使い方に不満が出たときは、一度設定を見直してみると良いでしょう。
補足・注意点
-
.wslconfig
は WSL2起動時のみ読み込まれるため、変更後はwsl --shutdown
が必須。 - 初回は
.wslconfig
の反映に Windowsの再起動が必要なこともあります。 -
wsl -d Ubuntu-22.04
でディストリ名を指定できない場合、wsl --list --verbose
で確認しておきましょう。 -
memory=20GB
のような指定は GiBではなくGB単位 なので、free -h
上では若干少なく見えます(正常です)。
Discussion