我们正在使用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的不同之处是什么?它会影响吞吐量性能吗?
答案 0 :(得分:0)
使用ntop.org的PF_RING套接字而不是PF_INET套接字。使用Intel(e1000)NIC,我们已经能够使用GigE Vision协议(UDP)获得高达75%的吞吐量,而无需使用特定于NIC的PF_RING驱动程序。
AFAIK tcp_congestion_control
只会在TCP会话开始时帮助您,并且在会话建立后无效。