Vagrantの共有フォルダは、NFSにするとかなり速くなることはよく知られていますが、NFSも設定を変えると、更に3.7倍速くすることができます。
デフォルトの設定
デフォだと、書き込み速度1が65MB/sでした。
Vagrantfile
config.vm.synced_folder "/Volumes/dev", "/Volumes/dev", type: "nfs"
設定を追加した場合
下記の設定を追加した場合、書き込み速度1は240MB/sまで向上しました。
デフォルトと比べて、3.7倍速くなっています。
Vagrantfile
config.vm.synced_folder "/Volumes/dev", "/Volumes/dev", type: "nfs",
mount_options: ['rw', 'vers=3', 'tcp'],
linux__nfs_options: ['rw','no_subtree_check','all_squash','async']
udpではなくtcp
UDPのほうがパフォーマンス速そうですが、なぜかTCP over UDPのほうがなぜか速かったです。分かる人いたら教えてください。
非同期(async)
非同期なNFSは信頼性と一貫性をトレードオフして、パフォーマンスを向上します。
ホストOSとゲストOS間では、ネットワーク的なトラブルが発生することがまず無いと考えられ、データ破損のリスクもないと考えられるため、非同期のほうにアドバンテージがあると思います。
参考
-
dd if=/dev/zero of=./test bs=1M count=100
で書き込み速度を検証した ↩