我有一个家庭网络,以 1 GBit/sec 交换机为中心点,所有计算机都配有 1 GBit/sec NIC。但是,通过 NFS 共享,我最多能获得 200 MBit/sec 的复制速度。看来我应该能获得更快的速度。我实际能期望什么?我该如何调整我的系统和 NFS 服务器以获得更高的速度?
顺便说一下,所有涉及的系统都是 Linux(CentOS 和 Fedora 的混合)。
答案1
您被开销打败了。您想研究巨型帧并扩展 nfs 读/写数据大小。网上有很多关于 NFS 性能调优的指南,比如这个看上去并不太过时。
还要注意,你永远不可能做得比磁盘速度更好,所以要确保这不是一个瓶颈。
答案2
您应该认真研究巨型帧。如今,即使是便宜的 5 端口 GbE 集线器也可以做到这一点,但是您必须在连接的两端都启用巨型帧。要启用巨型帧,请执行以下操作
ifconfig eth0 mtu 9000
以下是我从文件管理器自动挂载主目录时使用的挂载选项
rw,intr,soft,nfsvers=3.tcp,nolock,noatime,rsize=32768,wsize=32768
请更新问题并让我们知道情况是否有所改善
答案3
巨型帧当然可以有所帮助,但不要指望它能神奇地让你的吞吐量增加 100%。查看我的帖子这里在另一个问题中,讨论了一种不考虑磁盘 i/o 的情况下测试网络吞吐量的方法。这将为您提供一个基准,以查看是否可能存在与网络无关的其他因素。
如果您确实打算启用巨型帧,正如这里的一些人建议的那样,请注意一些限制和要求。
- 路径上的所有设备都必须支持并启用巨型帧。这包括:
- 发送和接收网卡
- 设备连接到的两个交换机端口
- 从发送方到接收方路径上的所有 L2 交换机端口(交换机到交换机连接)
- 路径上的所有 L3 接口(如果适用)
- 确保同一 VLAN 中的所有设备都支持巨型帧并进行了配置。
第二点的原因:假设两台 PC 设置在同一个 VLAN 中,一台配置为 9000 字节帧,另一台配置为 1500 字节帧。配置为标准帧的 PC1 将能够成功向 PC2 发送数据包。但是,PC2 发送的回复将全部是 9000 字节帧。由于 PC1 配置为标准帧,因此它将无法处理巨型帧,并且它们将被丢弃。要解决此问题,您需要在两台 PC 之间插入一个 L3 设备(路由器),以便它们能够通信。
答案4
您是否有能力启用 NIC 中断合并、接收端扩展或任何形式的 TCP 卸载(校验和或整体打包)?如果您可以启用它们,它们将产生巨大的影响,这取决于您的 NIC 和 IP 堆栈。