📈
WSL2の「Vmmem」メモリ大量消費の暫定対応手段
状況
「VmmemWSL」プロセスがメモリを大量に使っている。
特に、WSLで作業していないのにメモリ大量に使われている。
VmmemWSLは何している?
Linuxではメモリの一部に仮想メモリ(メモリの代わりにストレージにデータを保持する機能)を使っており、使用している仮想メモリが使われてなくなっても積極的にはデータを消さないらしい。
ディスクは大容量だがアクセスが遅いので理解できる動きです。
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を複数使っている人はこの際に、全部コマンドを流した方が良いでしょう。
メモリ消費がだいぶ落ち着きました
メモリ使用量制限
自分は試していないですが、WSLが使用するメモリ量を制限する方法もあります。
Discussion