我vagrant
为运行OSX的开发人员管理设置,以管理VirtualBox系统进行开发。
为了inotify
在Linux机器内部提供支持,我们避开了与VirtualBox共享目录的常用方法:相反,Virtualbox机器公开了一个NFS共享,该共享安装在OSX中。
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
第二个基准:
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(定量)。装载该卷的系统正在运行OSX Mavericks。
目前,主要的nfsd连接正在UDP上运行,这在虚拟连接上似乎是理想的选择。我不确定是否statsd
并且lockd
正在通过TCP和UDP运行。
我试着用async
旗杆和rwsize
加力杆进行安装,但效果不大。
在这种环境下,有哪些机会可以严重改善NFS的性能?
git status
从来宾计算机运行大约需要5秒钟。在OSX主机上,它安静得很快。我的设置是最新的vagrant,vb,共享NFS目录。您是如何更改界面的,我曾尝试这样做,但尚未弄清楚。另外,在进行一些更新后,它变得更加引人注目。我一开始没有这个问题
Am79C973
而不是)大大缓解了问题(最多可提高15倍)virtio
。这里的教训是更仔细地研究系统的工作:在某种程度上,瓶颈似乎是虚拟网络的性能。