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