vagrant
OSXを実行している開発者がVirtualBoxシステムを開発用に管理するためのセットアップを管理しています。
inotify
Linuxマシンの内部をサポートするために、VirtualBoxでディレクトリを共有する通常の方法を避けます。代わりに、VirtualboxマシンはOSXにマウントされているNFS共有を公開します。
Git(およびsourcetreeなどの関連ツール)は、OSXの共有ディレクトリで実行されます。このパフォーマンスは非常に低く、実行するだけで最大5秒かかることがよくありますgit status
。マウントされたNFSドライブに小さなリポジトリを複製するには、数分(ローカルドライブでは5〜10秒)かかります。
明らかに、NFSのパフォーマンスはローカルSSDに直接書き込むよりも劣りますが、NFSはVirtualboxの仮想プライベートネットワークインターフェイス上で実行されているだけです。
いくつかのベンチマークを実行しました。最初:
dd if=/dev/zero of=test bs=16 count=16384
各結果は100サンプルに基づいています。
# local drive
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.990 1.000 1.020 1.021 1.030 1.130
# on the shared NFS drive
Min. 1st Qu. Median Mean 3rd Qu. Max.
6.000 6.278 6.390 6.482 6.570 7.630
# inside the VirtualBox instance
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.3600 0.4800 0.5150 0.5552 0.5400 1.4500
2番目のベンチマーク:
ioping -c 500
local avg: 6 microseconds
local IOPS: 65.5 k
NFS Latency avg: 703 microseconds
NFS OPS: 1.4 k
明らかに、ある程度の待ち時間は避けられませんが、これは、いくつかの単純なタスクを非常に苦痛にするほど十分に悪いものです。
ボリュームの所有者は、デフォルト設定でUbuntu 12.10(Quantal)を実行しています。ボリュームをマウントするシステムは、OSX Mavericksを実行しています。
現時点では、メインのnfsd接続はUDPで実行されており、仮想接続よりも理想的と思われます。私は確信しているかどうかではないですstatsd
し、lockd
TCPやUDP上で実行されています。
async
旗とrwsize
ブーストでマウントしてみましたが、ほとんど違いがありませんでした。
この環境でNFSのパフォーマンスを真剣に改善する機会はありますか?
git status
ゲストマシンからの実行には約5秒かかります。OSXであるホストマシンでは、それは速く静かです。私のセットアップは最新のvagrant、vb、共有NFSディレクトリです。インターフェイスをどのように変更しましたか。変更しようとしましたが、まだわかりません。また、これは、いくつかの更新の後でより顕著になりました。最初はこの問題はありませんでした
Am79C973
代わりに別のVirtualboxネットワークインターフェイスを使用することで大幅に軽減しました(最大15倍の改善)virtio
。ここでのレッスンは、システムが何をしていたかをより詳しく調べたことです。ある時点まで、ボトルネックは仮想ネットワークのパフォーマンスにあるようです。