Cer*_*era 9 nfs virtualbox shared-storage vagrant
我vagrant为运行 OSX 的开发人员管理一个设置,以管理 VirtualBox 系统进行开发。
为了inotify在 linux 机器内部提供支持,我们避开了与 VirtualBox 共享目录的常用方法:相反,Virtualbox 机器公开了一个 NFS 共享,该共享安装在 OSX 中。
Git(以及相关工具,如 sourcetree)在 OSX 中的共享目录中运行。其性能极差:仅运行git status. 将一个小型存储库克隆到挂载的 NFS 驱动器可能需要几分钟(在本地驱动器上为 5-10 秒)。
显然 NFS 的性能会比直接写入本地 SSD 更差,但 NFS 只是在 Virtualbox 的虚拟专用网络接口上运行。
我运行了几个基准测试。首先:
dd if=/dev/zero of=test bs=16 count=16384
Run Code Online (Sandbox Code Playgroud)
每个结果都基于 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
Run Code Online (Sandbox Code Playgroud)
第二个基准:
ioping -c 500
local avg: 6 microseconds
local IOPS: 65.5 k
NFS Latency avg: 703 microseconds
NFS OPS: 1.4 k
Run Code Online (Sandbox Code Playgroud)
显然,一些延迟是不可避免的,但这已经够糟糕的了,它使一些简单的任务变得非常痛苦。
卷的所有者正在使用默认设置运行 Ubuntu 12.10 (Quantal)。安装卷的系统正在运行 OSX Mavericks。
目前主要的 nfsd 连接正在 UDP 上运行,这在虚拟连接上似乎很理想。我不确定是否statsd并lockd正在通过 TCP 和 UDP 运行。
我尝试使用async标志和rwsize提升进行安装,但几乎没有区别。
在这种环境下,有哪些机会可以认真提高 NFS 的性能?
小智 6
尝试使用这个 Git 设置,它会对 NFS 共享产生巨大的性能差异:
git config core.preloadindex true
Run Code Online (Sandbox Code Playgroud)
引用自可用文档:https : //git-scm.com/docs/git-config#git-config-corepreloadIndex
这可以加速诸如 git diff 和 git status 之类的操作,尤其是在 NFS 等具有弱缓存语义并因此具有相对较高 IO 延迟的文件系统上。启用后,Git 将并行对文件系统数据进行索引比较,从而允许重叠 IO。默认为真。
| 归档时间: |
|
| 查看次数: |
8807 次 |
| 最近记录: |