【nfsd】nfsd性能调优选项
nfsd性能调优选项
1. 最大传输块:用于设置NFS协议报文块的大小,也就是协议客户端一个报文允许携带的最大载荷,NFS默认1M(1048576),最大可设置为1M。
可通过命令echo 1048576 > /proc/fs/nfsd/max_block_size进行配置(重启失效)。
通信线程数: 设置协议通信线程数。通信线程处理能力不够时增大该值。
可通过命令echo 32 > /proc/fs/nfsd/threads进行配置。
通信线程数是否不够的问题,可通过netstat工具查看nfs连接上收发包缓冲区的积压情况大概查看一下,重点关注TCP的情况(默认使用TCP),2049为nfs业务端口。
业务线程数
设置协议业务线程数。业务线程处理能力不够时增大该值。
可通过命令echo 32 > /proc/fs/nfsd/pool_threads进行配置。
TCP/IP选项
net.ipv4.tcp_rmem = 10000000 20000000 40000000
TCP接收缓冲区的大小,实际上是TCP接收窗口的缺省值。在10GE网卡上建议调整为10MB 20MB 40MB
echo 10000000 20000000 40000000 > /proc/sys/net/ipv4/tcp_rmem
net.ipv4.tcp_wmem = 10000000 20000000 40000000
echo 10000000 20000000 40000000 > /proc/sys/net/ipv4/tcp_wmem
TCP发送缓冲区的大小。在10GE网卡上建议调整为10MB 20MB 40MB。
net.ipv4.tcp_mem = 400000 800000 1600000
TCP协议栈能够使用的内存页面数量,每个页面4KB。建议调整为上述值,即:400MB 800MB 1.6GB。
net.ipv4.tcp_window_scaling = 1
TCP窗口缩放因数选项,开启该选项后才可以支持大于64K的TCP窗口。
注:tcp_rmem和tcp_wmem两个值只需要在客户端上修改。
nfsiostat:
- op/s
This is the number of operations per second.
- rpc bklog
This is the length of the backlog queue.
- kB/s
This is the number of kB written/read per second.
- kB/op
This is the number of kB written/read per each operation.
- retrans
This is the number of retransmissions.
- avg RTT (ms)
This is the duration from the time that client's kernel sends the RPC request until the time it receives the reply.
- avg exe (ms)
This is the duration from the time that NFS client does the RPC request to its kernel until the RPC request is completed, this includes the RTT time above.
mountstats:输出的为累积统计值,可以统计所有命令字。输出信息有详细说明,需关注命令字统计对应的的backlog wait、RTT和total execute time。
/proc/1/mountstats
:nfsiostat
、mountstats
命令的源数据。主要关注xprt和命令对应的统计。
参考资料