如何为git等工作负载获得良好的NFS性能?


8

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的性能?


就目前而言,问题尚未解决,但我们通过使用其他Virtualbox网络接口(Am79C973而不是)大大缓解了问题(最多可提高15倍)virtio。这里的教训是更仔细地研究系统的工作:在某种程度上,瓶颈似乎是虚拟网络的性能。
Cera 2014年

我有一个类似的问题。git status从来宾计算机运行大约需要5秒钟。在OSX主机上,它安静得很快。我的设置是最新的vagrant,vb,共享NFS目录。您是如何更改界面的,我曾尝试这样做,但尚未弄清楚。另外,在进行一些更新后,它变得更加引人注目。我一开始没有这个问题
Ali

Answers:



5

本文包含一些调整NFS性能的有用技巧。

特别是使用nfsstat -rc来检查已经发生了多少次“重发重试”。如果重试次数过多,则意味着nfsd守护程序用完了线程以服务客户的请求,并且您需要增加可用线程的数量。

另外,请确保未对VirtualBox实例进行精简配置。发生写入操作时,VirtualBox上的精简配置存储会严重影响性能。


感谢您的答复。动态与固定音量之间的关系很有趣-我读过一些书,指出性能差异是一个神话,尽管如果您的经验对它有所帮助,则可以尝试一下。
Cera 2014年

这在很大程度上取决于底层的物理存储...一个拥有大量可用空间的空分区?性能下降可能不太明显。一个已经有很多对象的分区?VBox将不得不等待操作系统“四处寻找”空白空间来满足增长需求。
pepoluan 2014年

@pepoluan-是带磁驱动器还是SSD?
analytik

@analytik磁力驱动器。借助SSD,我认为碎片化将永远不会成为问题,并且您可以放心地使用精简配置存储。哎呀,即使性能受到影响,考虑到SSD的$ / GB仍然比磁驱动器的价格高,我将精简配置。
pepoluan 2015年

0

另一个答案已经提到检查NFS统计信息。

可能需要为VirtualBox虚拟机尝试不同的(虚拟)NIC配置-不同的虚拟芯片组和模式(桥接模式而不是nat)。

另外,如果使用了NFSv4,则值得尝试使用NFSv3。这些版本有很大不同,这可能会在性能上产生重大差异。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.