🤔

WSL、Docker環境が重い時の対処法

2023/09/24に公開

最近WSL、Dockerを使用して開発しているとPCの動作が非常に重くなりタスクマネージャーを見てみるとメモリ使用率が90%を超えているということが多くまともに作業ができないということがあったため今回は自分が行なった対処法を記事にまとめました。

一般的な対処法

まず一般的な対処法としてC:\Users\[username]\.wslconfigを設定しメモリの使用率を抑える方法があります

.wslconfig
[wsl2]
memory=8GB  //こちらにwslが使用するメモリを指定する
processors=4

設定後WSLを再起動して設定を反映

PowerShell
C:\Users\username> wsl --shutdown

反映後は設定したメモリ量を超えなくなります

上記の対処法で発生した問題

自分の場合Dockerも一緒に使用していたのですが上記の方法ではDocker上で重いコンパイル処理などをしようとした際にリソース不足によるエラーが発生してしまうという問題が発生しました

不要なメモリを自動的に解放させる

WSL 1.3.10から不要になったメモリを自動的に開放させる設定を.wslconfigに追加できるようになった
https://github.com/microsoft/WSL/releases/tag/1.3.10
まず、以下のコマンドでWSLをアップデート
※現時点では--pre-releaseを付けないとアップデートできないので注意

PowerShell
C:\Users\username> wsl --update --pre-release

wsl --versionで正常にアップデートできていることを確認したら、.wslconfigファイルを開く

.wslconfig
[wsl2]
memory=8GB  
processors=4
//以下を追加
[experimental]
autoMemoryReclaim=true

これでWSLが不要なメモリを自動的に開放するようになった

結果

自分の環境ではこちらの設定適応前はWSLとDockerを起動していると常にメモリ使用率が90%以上だったが適応後は大体75%くらいに収まるようになった

Discussion