10GbEnetworking吞吐量非常低

我有两台Linux机器,每台配备一个Solarflare SFN5122F 10GbE NIC。 两个NIC使用SFP +直连电缆连接在一起。

我使用netperf来衡量两台机器之间的TCP吞吐量。 在一个盒子里,我运行:

netserver 

另一方面:

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

我得到:

 MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.xx (192.168.xx) 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%。

我可以采取哪些措施来解决这个问题?

一些事情:

  • 你是否尝试调整MTU 使用巨型帧 ?
  • 您是否确定两台服务器之间的链路没有丢包?
  • ethtool会告诉你两端接口上的错误吗?
  • 在长时间的testing中,顶部/顶部会说什么 – 你看到任何核心完全被爱荷华州占领?

你很可能在单个TCP会话上达不到完整的10Gbit,但你可以通过调整tcp处理和与网卡本身的通信来进行一些额外的调整,以更接近它 – 看看这里或这里 。