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 磁盘。大文件传输时负载增加高的主要内容,如果未能解决你的问题,请参考以下文章

十NFS服务器配置和管理

[记录]FIO测试磁盘iops性能

网络文件系统NFS的作用?

[yj]磁盘的iops和吞吐量(Throught)指标

集群搭建完成简要测试集群(性能)带宽与IOPS

磁盘性能指标--IOPS与吞吐量