欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

如何每秒接收 100 万个数据包 - 摘要

最编程 2024-04-13 10:00:12
...

我做了一些进一步的测试,通过在单个NUMA节点上完全对齐的RX队列和接收线程,有可能获得1.4Mpps。在不同的NUMA节点上运行receiver会导致数字下降,达到最多1Mpps。

综上所述,如果你想要一个完美的表现,你需要:

  • 确保流量均匀分布在许多RX队列和SO_REUSEPORT进程。在实践中,只要有大量的连接(或流),负载通常是均匀分布的。

  • 您需要有足够的空闲CPU容量来实际从内核获取数据包。

  • 更困难的是,RX队列和接收进程都应该位于单个NUMA节点上。

虽然我们已经展示了在Linux机器上接收1Mpps在技术上是可能的,但应用程序并没有对接收到的数据包进行任何实际处理——它甚至没有查看流量的内容。在没有大量工作的情况下很好,其它情况下,不要期望任何实际应用程序具有这样的性能。