NFS v4 具有快速网络和平均 IOPS 磁盘。大文件传输时负载增加高
Posted
技术标签:
【中文标题】NFS v4 具有快速网络和平均 IOPS 磁盘。大文件传输时负载增加高【英文标题】:NFS v4 with fast network and average IOPS disk. Load increase high on large file transfer 【发布时间】:2015-12-04 11:51:08 【问题描述】:具有快速网络和平均 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)
它在带有“同步”标志的情况下运行良好,但传输器从 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】:我想我成功了:
在服务器上,更改磁盘调度程序:
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
【讨论】:
以上是关于NFS v4 具有快速网络和平均 IOPS 磁盘。大文件传输时负载增加高的主要内容,如果未能解决你的问题,请参考以下文章