我们正在对具有1GB DDR3规格的Macnica Helio板的gigE进行吞吐量测试。目前,我们实现了60%(超大帧)吞吐量,但是我们希望应用中的吞吐量更高。
计算方法如下:
(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,然后执行客户端代码并使用wirehark测试吞吐量性能
我们确实尝试使用以下命令更改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有什么不同,会影响吞吐性能吗?
最佳答案
使用ntop.org的PF_RING套接字而不是PF_INET套接字。通过使用Intel(e1000)NIC的GigE Vision协议(UDP),我们能够获得高达75%的吞吐量,而无需使用特定于NIC的PF_RING驱动程序。
AFAIK tcp_congestion_control
仅在TCP会话开始时为您提供帮助,并且在会话建立后无效。
关于linux - 提高巨型帧的以太网吞吐量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20277687/