提高巨型帧的以太网吞吐量

时间:2013-11-29 03:00:01

标签: linux linux-device-driver ethernet

我们正在使用1GB DDR3规格的Macnica Helio板的gigE上运行吞吐量测试。我们现在实现了60%(Jumbo帧)吞吐量,但是我们期望在我们的应用中获得更高的吞吐量。

计算方法如下: -

    (100M / time taken * 8-bit /1Gbps)*100%

我们做了什么: - 使用服务器和客户端代码传输100MB

服务器(Cyclone V) -change eth0 MTU 7500(仅当我们使用ethtool“ethtool -K eth0 tx off”关闭tx校验和时才会实现“否则我们只能将MTU更改为3500)然后执行服务器代码

客户端(笔记本电脑运行UBUNTU) - 将eth0 MTU更改为9000然后执行客户端代码并使用wireshark

测试吞吐量性能

我们尝试使用下面的命令更改ipv4设置,但吞吐量结果仍然相同

   -sysctl -w net.core.rmem_max=18388608
   -sysctl -w net.core.wmem_max=18388608
   -sysctl -w net.core.rmem_default=1065536
   -sysctl -w net.core.wmem_default=1065536
   -sysctl -w net.ipv4.tcp_rmem=4096 87380 18388608
   -sysctl -w net.ipv4.tcp_wmem=4096 87380 18388608
   -sysctl -w net.ipv4.tcp_mem=18388608 18388608 18388608
   -sysctl -w net.ipv4.route.flush=1
   -sysctl -w net.ipv4.tcp_mtu_probing=1

问题

是否有任何方法或解决方案可以实现更高的吞吐量?

如果我们关闭tx校验和会有什么影响吗?

立方和双参数之间tcp_congestion_control的不同之处是什么?它会影响吞吐量性能吗?

1 个答案:

答案 0 :(得分:0)

使用ntop.org的PF_RING套接字而不是PF_INET套接字。使用Intel(e1000)NIC,我们已经能够使用GigE Vision协议(UDP)获得高达75%的吞吐量,而无需使用特定于NIC的PF_RING驱动程序。

AFAIK tcp_congestion_control只会在TCP会话开始时帮助您,并且在会话建立后无效。