我试图了解与NFS和各种缓冲区大小相关的网络设置(而且有很多)。
我正在运行wireshark并检查到达NFS服务器的TCP数据包。Wireshark在扩展的写操作(client->server)中显示的数据包大小最大为32626,假设我正确地解释了(“线上的字节”,我认为它包括所有的网络层报头等等)。
导出存储的"rsize“和"wsize”NFS设置在C/S上都设置为32k,因此我认为上述结果是此设置的结果。但是,增加这些值并不会增加Wireshark显示的数据包大小。
因此,我的问题是,还有哪些限制因素可以存在?我做了大量的研究,这也是我到目前为止遇到的。在我看来,以下任何一种网络限制都不会将传输规模限制在32K以下:
来自sysctl:
net.ipv4.tcp_mem = 4096 87380 4194304
net.ipv4.tcp_{r,w}mem = 4096 87380 4194304
net.core.{r,w}mem_max = 131071
net.core.rmem_default = 229376我的MTU目前是8K
发布于 2014-02-06 07:41:30
由客户端挂载选项和/或服务器功能定义的NFS {r,w}大小。IOW,您可以在命令行中定义它们,例如:
# mount -o rsize=1048576 .....Linux对于v3和v4 - 32k和1MB有不同的默认值。nfs服务器可以请求更小的或可以支持更大的大小。您应该可以看到,使用wireshark作为FSINFO调用v3或FATTR4_MAXREAD/FATTR4_MAXWRITE文件属性,这些属性是使用第一个GETATTR调用请求的。
RPC层可以将单个读或写请求拆分为多个RPC片段。TCP层可以将单个RPC片段分割成多个TCP数据包。另一方面,TCP层可能会将多个RPC请求合并到单个TCP数据包中,如果它们合适的话。
有一个相当过时的文档优化NFS性能,但将了解如何调整数字。
https://serverfault.com/questions/573447
复制相似问题