豚吐露@wiki
WSL上でgitを動かすと遅い
最終更新:
ohden
-
view
WSL上でgitを動かすと遅い
Windows 10 Pro(64bit) 21H2(19044.1645)
Ubuntu 20.04LTS
Ubuntu 20.04LTS
話の経緯
新しいPCにWSL入れてgit使ってたが、おかしいくらいに遅い...
大量のappやadd-on入れたりした訳でも無いのに異様に遅い...
大量のappやadd-on入れたりした訳でも無いのに異様に遅い...
原因分からずもそのまま頑張って使ってみとったんじゃが、Windowsにgit入れて試してみたら早いって気付いた。
てことは、犯人は...WSLか?
でもPC変える前も普通にWSL on git使ってたが...
てことは、犯人は...WSLか?
でもPC変える前も普通にWSL on git使ってたが...
原因分かった
で、原因分かった。WSL2上でgitを動かしてるせいだった。
WSL2がreleaseされて、defaultのWSL versionが2に変わった。
普通にWSL入れて、ディストリビューション選択してってすると、WSL2が勝手に選択される。
どうやらWSL2からのLinuxシステムコールは完全互換になったが、WSL1に比べて遅いらしい。
故に、システムコール多用するアプリだと遅くなる模様。
加えて、今回cloneした先が/mnt/c/配下だった事も原因。
WSL2では、LinuxからWindowsのfilesystemへのアクセスが激遅らしい。
普通にWSL入れて、ディストリビューション選択してってすると、WSL2が勝手に選択される。
どうやらWSL2からのLinuxシステムコールは完全互換になったが、WSL1に比べて遅いらしい。
故に、システムコール多用するアプリだと遅くなる模様。
加えて、今回cloneした先が/mnt/c/配下だった事も原因。
WSL2では、LinuxからWindowsのfilesystemへのアクセスが激遅らしい。
参考までに同じrepositoryをcloneしたときの時間比較。
OS | git | time |
---|---|---|
Ubuntu20.04LTS on WSL2 | git version 2.25.1 | 79 min |
Ubuntu20.04LTS on WSL1 | git version 2.25.1 | 2 min |
40倍です...(´;ω;`)
WSL2を使わなければならない状況でないのであれば、WSL1使った方が色々融通効いて良いと思います。
対策:WSL2→WSL1
状況を確認。
wsl -l -v
NAME STATE VERSION * Ubuntu Running 2
ディストリビューション名を指定してversionを変更。
wsl --set-version Ubuntu 1
恒久的にどう対応するか?
原因は以下の2つ。
①system callが遅い
②Win~Linux間のfilesystemを跨ぐと遅くなる
なので、WSLでDockerとか使いたいとか思ってる人は、少なくとも②は回避するべき。
①system callが遅い
②Win~Linux間のfilesystemを跨ぐと遅くなる
なので、WSLでDockerとか使いたいとか思ってる人は、少なくとも②は回避するべき。
symbolic link貼るにしても、WSL側から/mnt/cに向かってlnするのではなく、Windows側でmklinkする方がストレス無いんじゃないかと思う。
WSL2 | \\wsl$\ |
WSL1 | C:\Users\【UserName】\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs |
一応、WSL1のpathも載っけとく。
MSがWSLを良い感じにupdateしてくれて、上記の内容がストレス無くなればbestなんですが...
更新日: 2024年10月03日 (木) 14時41分08秒