📈
WSL2の「Vmmem」メモリ大量消費の暫定対応手段
状況
「VmmemWSL」プロセスがメモリを大量に使っている。
特に、WSLで作業していないのにメモリ大量に使われている。
VmmemWSLは何している?
WSL2はLinuxが仮想メモリを使った場合、メモリに空きがあればメモリ内に展開します。
そのメモリ内展開を「VmmemWSL」が行っており、たくさんのメモリを使うようです。
そして、Linuxは仮想メモリを積極的には消さないため、メモリを使い続けます。
原因はわからないが
そもそもの原因は、WSL2のLinuxがメモリを大量消費したことにあるのです。
なぜLinuxが大量に(仮想)メモリを使うのかはわからないです。。。が、この問題でググるとDocker DeskTopを使っている人多すぎる。
やめたら、改善したという人もいるし、怪しすぎる。。。
関連issue
暫定対応法
メモリをフラッシュ
ターミナルを立ち上げて、wslに入り、
powershell
# WSLに入るコマンド。すでにWSLに入っている場合は不要
wsl
# メモリをフラッシュするコマンド
sudo sh -c "/usr/bin/echo 3 > /proc/sys/vm/drop_caches"
実行例
Linuxを複数使っている人はこの際に、Linux毎にコマンドを流した方が良いでしょう。
メモリ消費がだいぶ落ち着きました
メモリ使用量制限
自分は試していないですが、WSLが使用するメモリ量を制限する方法もあります。
おまけ
現在開発中のWSLでは、WSLのメモリサイズ
や スワップサイズ
をGUIから指定いできるようになります。
また、 メモリの自動縮退機能 が正式版になります。
アイドルが5分以上続いた場合、WSLの使用メモリが自動的に縮退を行うようです。
この機能で、この問題が解決してほしいです。。。
Discussion