LoginSignup
3
1

More than 1 year has passed since last update.

WSL2でファイルシステムのアクセス速度がどの程度変わったか

Posted at

なんか速度比べばかりしているような気がしますが・・・
今回はWSL2のファイルアクセス速度についてです。

WSL1から比べるとWSL2ではLinuxファイルシステムのアクセスは高速になったが、Windowsファイルシステム(/mnt/ドライブ名)のアクセスは遅くなったと言われます。
実際例えばJavaのソースリポジトリを /mnt/c/ 以下のディレクトリにcloneしてきてビルドしたりすると極端に遅いので体感的にもわかります。

それでも意外とWSL2のほうが最新だしWSL2使おうというような感じで使われてて、かつ /mnt/ドライブ名 以下にワークディレクトリがあってビルドが遅くても比較対象がないので気にしていないなんてことが散見されるので、今更ながら記事にしてみました。

検証環境

  • OS
    • Windows 10 Pro
  • バージョン
    • 21H1
  • CPU
    • Core i7-10700
  • ディスク
    • Crucial P2 SSD 1TB

速度計測方法

WSL1,WSL2でそれぞれ以下のように計測しました。

  1. Ubuntu20.04の環境を作成。
  2. /dev/urandomを使い1kBの中身がランダムなファイルを10000個、Linux,Windows両ファイルシステムに作成。
  3. 上記10000個のファイルをcpコマンドでそれぞれ同一ファイルシステムにコピーする時間をtimeコマンドで計測。
  4. コピー元のディスクキャッシュの影響があるため何度か計測して安定してきた値を計測値とする。

ディスクキャッシュの関係から読込側というよりは書き込み側の速度テストになっています。
また、本来のディスクベンチマークであれば大きいサイズのファイルコピーなども行うのでしょうが、簡易計測ということで割愛しています。

計測結果

以下にファイルコピーの時間をそれぞれ記載しますが、時間の絶対値は環境によって変わるので、あくまで相対的に見るようにしてください。

WSL1

Linuxファイルシステム

real    0m4.789s
user    0m0.094s
sys     0m4.625s

Windowsファイルシステム

real    0m6.413s
user    0m0.109s
sys     0m6.297s

WSL2

Linuxファイルシステム

real    0m0.197s
user    0m0.044s
sys     0m0.154s

Windowsファイルシステム

real    0m56.177s
user    0m0.625s
sys     0m8.962s

結論

  • WSL1の場合はWindowsファイルシステムのほうが多少遅いものの、大差ない。(どちらもそこそこ遅い?)

  • WSL2は言われている通りLinuxファイルシステムは高速。だが、Windowsファイルシステムは致命的に遅い。

例えばWSL2でJavaサーバーの開発をする場合を想定すると、ワークディレクトリをWindowsファイルシステム側に置くのは非常に効率が悪いので避けるべきでしょう。逆にLinuxファイルシステム側に置くことでビルド等は速くなりそうです。(ビルドはファイルの読み書きが大量に発生するため)

IntelliJもWSLに対応して、WSL側でプロジェクトを開けるようになりましたし(かつJDKもWSL側のを使える)、VSCodeもWSL側から開けるので今後はそういったツールを活用していくのがよさそうです。

どうしても利用ツールの問題でWindowsファイルシステム側にワークディレクトリを置く必要がある場合はWSL1を利用しましょう。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1