👏

WSLのアップデートでメモリ開放?

2023/06/15に公開

え?まじ?

関連記事:
WSL2 2.0.0がこっそリリース
WSL2でvmmem確保メモリを開放する方法

時事はあまりやらないけど。

ヾ(・ω<)ノ" 三三三● ⅱⅲ コロコロ♪

------------------- ↓ 本題はここから ↓-------------------

Memory reclamation

WSLのアップデート情報に気になる内容があった

https://github.com/microsoft/WSL/releases/tag/1.3.10

Memory reclamation idle detection, drop_caches. 
メモリ再利用のアイドル検出

WSLはメモリを一度確保するとリセットするまで話さない動きをする。
お陰でちょっとメモリを使う処理をするとPCのリソースがなくなってしまう問題がある。

それを開放してくれるとかそういうこと?
ワイの誤訳?
ちょっとわからんけど期待したい。

https://www.phoronix.com/news/Microsoft-WSL-1.3.10

This memory reclamation is based on idle detection and can drop caches believed to be idle/un-used.
このメモリ再生は、アイドル検出に基づいており、アイドル/未使用と思われるキャッシュを削除することができます。

・・・( ̄  ̄;) うーん、あってる・・・ぽい?

drop_caches

どうやらLinuxのキャッシュをドロップすることでメモリを回復する手段があるらしい

https://github.com/microsoft/WSL/issues/4166#issuecomment-570913524

https://unix.stackexchange.com/a/87909

bash
echo 3 > /proc/sys/vm/drop_caches
# または sync && echo 3 | sudo tee /proc/sys/vm/drop_caches

これをシステム本体に組み込んだとかそういうことか。

------------------- ↓ 本題はここから ↓-------------------

とりあえずアップデートしてみよう
wsl自体のバージョンアップでpre-releaseオプションを付ける

ps
wsl --update --pre-release
 更新プログラムを確認しています。
 Linux 用 Windows サブシステムをバージョンに更新しています: 1.3.11。

wsl --version
WSL バージョン: 1.3.11.0

.wslconfigファイルを調整
(/etc/wsl.conf ではない)

~/.wslconfig
[experimental]
autoMemoryReclaim=true

結果

定量的なものはだせないけど、
一度掴んだら開放しないイメージの vmmmem プロセスが、
アイドル状態のときに少しづつメモリを空けている印象がある。
(緩やかにだけど)

試しにnpmのビルド時のメモリ推移を出してみると、
ビルド完了をピークにメモリ使用量が減っている。
(アプデ前のグラフ出せれば良かったが)

これはいいかもしれん。

Discussion