🤖

WSL2の仮想環境のスペックを調整する

に公開

はじめに

Claude CodeをWindows上のWSL2で試し始めた人なら、最初は驚くほどスムーズに動作することに満足すると思います。実際、私も以下のZenn記事(外部リンク)を参考に、WindowsのWSL2にClaude Sourceを構築するところまではすんなり進みました。

参考記事: Claude Code をインストールして使ってみる(acntechjpさん)

ところが、実際に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やメモリの使い方に不満が出たときは、一度設定を見直してみると良いでしょう。

補足・注意点

  • .wslconfigWSL2起動時のみ読み込まれるため、変更後は wsl --shutdown が必須
  • 初回は .wslconfig の反映に Windowsの再起動が必要なこともあります
  • wsl -d Ubuntu-22.04 でディストリ名を指定できない場合、wsl --list --verbose で確認しておきましょう。
  • memory=20GB のような指定は GiBではなくGB単位 なので、free -h 上では若干少なく見えます(正常です)。

Discussion