根据各种NFS调优资源,更改nfsd线程的数量(在我的情况下是内核线程)会影响性能.通常,这个建议的框架是在大量使用的服务器上增加默认值8的数量.我在当前配置中找到的内容:
RPCNFSDCOUNT = 8 :(默认值):13.5-30秒在客户端上获取1GB文件,因此35-80MB /秒
RPCNFSDCOUNT = 16:18s来捕获文件60MB / s
RPCNFSDCOUNT = 1:8-9秒来捕获文件(!!?!)125MB / s
RPCNFSDCOUNT = 2:87s来捕获文件12MB / s
我应该提一下,我正在导出的文件是使用Xen的PCI-passthrough安装在服务器上的RevoDrive SSD上;在服务器上,我可以在几秒钟内(> 250MB / s)捕获文件.我在每次测试之前都在客户端上放置缓存.
我真的不想让服务器配置只有一个线程,因为我猜测当有多个客户端时效果不会很好,但我可能会误解它是如何工作的.我重复了几次测试(在两者之间更改服务器配置),结果相当一致.所以我的问题是:为什么1线程的性能最好?
我试过改变的其他一些事情,很少或没有效果:
>将/ proc / sys / net / ipv4 / ipfrag_low_thresh和/ proc / sys / net / ipv4 / ipfrag_high_thresh的值从默认的192K,256K增加到512K,1M
>将/ proc / sys / net / core / rmem_default和/ proc / sys / net / core / rmem_max的值从默认值128K增加到1M
>使用客户端选项安装rsize = 32768,wsize = 32768
从sar -d的输出中我了解到底层设备的实际读取大小相当小(<100字节),但这在客户端本地读取文件时不会引起问题. RevoDrive实际上暴露了两个“SATA”设备/ dev / sda和/ dev / sdb,然后dmraid选择了一个假的RAID-0条纹,我已经挂载到/ mnt / ssd然后绑定挂载到/ export / ssd.我已经使用两个位置对我的文件进行了本地测试,并看到了上面提到的良好性能.
如果答案/评论要求更多细节,我会添加它们.