概要
WSL2でホスト側のディスクへのアクセス速度が遅いので、SSHFSを使用することで読み取りが5MB/s->50MB/sに改善した。
追記: エクスプローラから、WSLに直接アクセスすることで500MB/sまで改善できた。
現状
WSL2ではホスト側のディスク(CドライブとかDドライブとか)をマウントする場合に、仮想ファイルシステムを経由するようで、アクセス速度がめちゃくちゃ遅い。測定結果は以下のようになる。以下は測定したいディスク(/mnt/dなど)で行う。
まず書き込み。ただしエラーとなったため参考まで。
/mnt/d$ dd if=/dev/zero of=tmp bs=1M count=1024 dd: error writing 'tmp': Input/output error 180+0 records in 179+0 records out 188219200 bytes (188 MB, 179 MiB) copied, 0.802771 s, 234 MB/s
次に読み込み。5.2 MB/sと非常に遅いことがわかる。
$ dd of=/dev/zero if=tmp 367615+1 records in 367615+1 records out 188219200 bytes (188 MB, 179 MiB) copied, 36.0973 s, 5.2 MB/s
5MB/sならネットワークのほうが早いじゃないか、ということでSSHFSを使ってみる。
SSHFS の準備
- WSLでのSSHサーバー起動
wsl2でsshサーバを起動し、外部からそこに接続 - Qiita
- SSHFSwinのインストール&起動
Windows10にwin-sshfsをインストールする方法
計測結果
上記のようにすると、WSL側のディレクトリがWindows側にマウントされている状態となる。なのでWindows側でアクセス速度を計測する。結果は以下の通り。通常のディスクに比べるとかなり見劣りしてしまうものの、一応高速化することはできた。
WSLに直接アクセス
エクスプローラから「\wsl$」と打つと、現在あるWSLの/にアクセスできる。例えば自分だとUbuntu-18.04というフォルダが作成されており、その下に/dev, /etc ...とフォルダがある。ここにファイルを書き込んでしまえばWSLからも見え、ファイルの読み書きができる状態になる。
ちなみにアクセス速度は以下のような感じ。/ではテストできないので、ホームディレクトリで計測している。ここまで高速化できればOKだろう。