10GbE 网络吞吐量非常低

10GbE 网络吞吐量非常低

我有两台 Linux 机器,每台都配备了Solarflare SFN5122F10GbE NIC。两个 NIC 通过 SFP+ 直连电缆连接在一起。

我在用网络性能测试测量两台机器之间的 TCP 吞吐量。在一台机器上,我运行:

netserver

另一方面:

netperf -t TCP_STREAM -H 192.168.x.x -- -m 32768

我得到:

MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.x.x (192.168.x.x) port 0 AF_INET
Recv   Send    Send                          
Socket Socket  Message  Elapsed              
Size   Size    Size     Time     Throughput  
bytes  bytes   bytes    secs.    10^6bits/sec  

 87380  16384  32768    10.02    1321.34   

测量的吞吐量为 1.3Gb/s。这比理论最大值低 7.5 倍,仅比 1GbE 快 30%。

我可以采取什么步骤来解决这个问题?

答案1

一些事情:

  • 您是否尝试过将 mtu 调整为利用巨型帧
  • 您是否绝对确定两台服务器之间的链接没有任何数据包丢失?
  • ethtool 是否显示两端接口上有任何错误?
  • 在长时间的测试中,top/atop 说了什么 - 您是否看到任何核心完全被 iowait 占用?

你 [很可能] 无法在单个 TCP 会话中实现完整的 10gbit,但你可以通过调整 TCP 处理和与网卡本身的通信来做一些额外的调整,以更接近它 - 看一看这里或者这里

相关内容