豚吐露@wiki

WSL上でgitを動かすと遅い

最終更新:

ohden

- view
管理者のみ編集可

WSL上でgitを動かすと遅い


Windows 10 Pro(64bit) 21H2(19044.1645)
Ubuntu 20.04LTS

話の経緯

新しいPCにWSL入れてgit使ってたが、おかしいくらいに遅い...
大量のappやadd-on入れたりした訳でも無いのに異様に遅い...

原因分からずもそのまま頑張って使ってみとったんじゃが、Windowsに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へのアクセスが激遅らしい。

参考までに同じ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とか使いたいとか思ってる人は、少なくとも②は回避するべき。

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秒

名前:
コメント:

すべてのコメントを見る
記事メニュー
ウィキ募集バナー