具有快速网络和平均IOPS磁盘的NFS v4。大文件传输时负载增加很高

时间:2015-12-04 11:51:09

标签: file load nfs

具有快速网络和平均IOPS磁盘的NFS v4。大文件传输时负载增加很高。 问题似乎是IOPS。

测试用例:

/etc/exports
server# /mnt/exports    192.168.6.0/24(rw,sync,no_subtree_check,no_root_squash,fsid=0)
server# /mnt/exports/nfs        192.168.6.0/24(rw,sync,no_subtree_check,no_root_squash)

client# mount -t nfs 192.168.6.131:/nfs /mnt/nfstest  -vvv
(or client# mount -t nfs 192.168.6.131:/nfs /mnt/nfstest -o nfsvers=4,tcp,port=2049,async -vvv)

它运作良好,同步'旗帜,但是transger drop形成50MB / s到500kb / s

http://ubuntuforums.org/archive/index.php/t-1478413.html 这个话题似乎是通过将wsize减少到wsize = 300来解决的 - 小改进但不是解决方案。

使用dd进行简单测试:

client# dd if=/dev/zero bs=1M count=6000 |pv | dd of=/mnt/nfstest/delete_me




server# iotop
  TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND                                                                                                    
 1863 be/4 root        0.00 B/s   14.17 M/s  0.00 % 21.14 % [nfsd]
 1864 be/4 root        0.00 B/s    7.42 M/s  0.00 % 17.39 % [nfsd]
 1858 be/4 root        0.00 B/s    6.32 M/s  0.00 % 13.09 % [nfsd]
 1861 be/4 root        0.00 B/s   13.26 M/s  0.00 % 12.03 % [nfsd]

server# dstat -r --top-io-adv --top-io --top-bio --aio -l -n -m
--io/total- -------most-expensive-i/o-process------- ----most-expensive---- ----most-expensive---- async ---load-avg--- -NET/total- ------memory-usage-----
 read  writ|process              pid  read write cpu|     i/o process      |  block i/o process   | #aio| 1m   5m  15m | recv  send| used  buff  cach  free
10.9  81.4 |init [2]              1    5526B  20k0.0%|init [2]   5526B   20k|nfsd         10B  407k|   0 |2.92 1.01 0.54|   0     0 |29.3M 78.9M  212M 4184k
1.00  1196 |sshd: root@pts/0      1943 1227B1264B  0%|sshd: root@1227B 1264B|nfsd          0    15M|   0 |2.92 1.01 0.54|  44M  319k|29.1M 78.9M  212M 4444k
   0  1365 |sshd: root@pts/0      1943  485B 528B  0%|sshd: root@ 485B  528B|nfsd          0    16M|   0 |2.92 1.01 0.54|  51M  318k|29.5M 78.9M  212M 4708k

您是否知道在没有大的配置更改的情况下限制负载的任何方法?

我确实考虑过使用wondershaper或iptables来限制网络速度,但这并不好,因为其他流量也会受到损害。

有人建议cgroups - 可能值得解决 - 但它仍然不是我的风水' - 我希望在NFS配置中找到解决方案 - 因为问题在这里,在一个地方解决方案中会很不错。

如果可以增加同步'速度达到10-20MB / s对我来说已足够了。

1 个答案:

答案 0 :(得分:0)

我想我已经钉了它:

在服务器上,更改磁盘scheduller:

for i in  /sys/block/sd*/queue/scheduler  ; do echo deadline > $i ; done

另外(小改进 - 找到你的最佳价值):

/etc/default/nfs-kernel-server
# Number of servers to start up
-RPCNFSDCOUNT=8
+RPCNFSDCOUNT=2

重启服务

/etc/init.d/rpcbind restart
/etc/init.d/nfs-kernel-server restart

PS: 我目前的配置

服务器:

/etc/exports
/mnt/exports    192.168.6.0/24(rw,no_subtree_check,no_root_squash,fsid=0)
/mnt/exports/nfs        192.168.6.0/24(rw,no_subtree_check,no_root_squash)

客户端:

/etc/fstab
192.168.6.131:/nfs /mnt/nfstest nfs rsize=32768,wsize=32768,tcp,port=2049 0 0