2018年4月6日金曜日

WSLでRubyのビルドやbundle installが遅いのはESET Internet Securityが原因だった模様

タイトルのままなんですが、WSLでRubyのビルドする時やbundle installするときのnative extensionのビルドする時に、仕事で使っているSurface Bookでは遅くないのに、プライベート用のSurface Laptopだと著しく遅いという現象に悩まされていました。
CPUやメモリは世代が違うくらいでどちらもほぼ同じでi7/16GBのような構成です。

昨日プライベート用のSurface LaptopのWSL上でRubyのビルドしながら遅いなと思い、タスクマネージャーを眺めていたところ、CPU使用率が100%付近に張り付いているのに気付きました。

何のプロセスがそんなにCPUを使っているのかをチェックしたところ、通常時は1%未満程度しか使っていないESET Service(ekrn.exe)が常時30%~50%程度CPUを使用していました

これはおかしいと思い一旦ESET Internet Securityの保護を一時的に無効化した状態でビルドしてみたところ、段違いの速さでビルドが終わるではありませんか。

仕事用のSurface BookはESETではないものを使っていますし、ビンゴのようです。

色々試してどうやらリアルタイムファイルシステム保護で「%LocalAppData%\Packages\パッケージ名\LocalState\rootfs」あたりにあるWSLのVolFS(WSL内のLinuxファイルシステム)のスキャンをして遅くなっているようでした。
Rubyのビルドとかはファイルの状態がいろいろ変わるのでそういうことなんでしょうね。

このパスをリアルタイムファイルシステム保護の除外フィルタに指定することで、一時的に無効化した時と同じようにESET ServiceのCPU使用率が下がり、ビルドが遅くなる問題が解消しました。
(指定する場合は自己責任でお願いします。)

しかしこれを指定するのはやや不安が残るので、ESETのサポートにどうにかならないか問い合わせてみています。
解消してくれたらうれしい……。

VolFSの中も普通にWindows側から見えるんですね。
Windows側からは触るべきじゃないっていう情報があったりするので見えるからといって触らない方が良いと思いますが。


ESET Internet Security v11.0.149.0で確認しました。

0 件のコメント:

コメントを投稿