如何每秒接收 100 万个数据包 - 摘要
最编程
2024-04-13 10:00:12
...
我做了一些进一步的测试,通过在单个NUMA节点上完全对齐的RX队列和接收线程,有可能获得1.4Mpps。在不同的NUMA节点上运行receiver会导致数字下降,达到最多1Mpps。
综上所述,如果你想要一个完美的表现,你需要:
-
确保流量均匀分布在许多RX队列和SO_REUSEPORT进程。在实践中,只要有大量的连接(或流),负载通常是均匀分布的。
-
您需要有足够的空闲CPU容量来实际从内核获取数据包。
-
更困难的是,RX队列和接收进程都应该位于单个NUMA节点上。
虽然我们已经展示了在Linux机器上接收1Mpps在技术上是可能的,但应用程序并没有对接收到的数据包进行任何实际处理——它甚至没有查看流量的内容。在没有大量工作的情况下很好,其它情况下,不要期望任何实际应用程序具有这样的性能。
上一篇: 优雅关闭 jar 程序 shell 脚本
下一篇: WIFI 信号满格但网速慢有什么问题?