生成UDP数据包的最快方法

2024-05-17 13:56:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我们正在构建一个测试工具来在UDP多播上推出二进制消息。在

原型使用Twisted reactor循环来推送消息,这几乎达到了我们所需的流量水平——大约每秒12万条消息。在

我们在我们的测试机器上有16个核心,很明显我想把这个扩展到那些核心上,以真正让线束飞起来。在

有没有人对我们如何设计应用程序(使用事件循环方法或CSP风格的方法)来提高输出有什么想法吗。在

同样,原型中的大部分时间都是用来写UDP-as-IO的,我不应该感到惊讶,但是我遗漏了什么吗?在

欢迎有任何想法。在


Tags: 方法机器应用程序消息核心二进制水平事件
2条回答

多个网卡,硬件或内核接口是限制。使用Broadcom Corporation NetXtreme BCM5704S千兆以太网适配器,我只能达到每秒69000个数据包。尝试使用四个Intel Gigabit服务器适配器,所有四个NIC都位于同一子网中。在

当在Python应用程序中使用多个核心时,最明显的答案是使用多个进程。使用Twisted,可以使用reactor.spawnProcess启动子进程。您也可以用其他方式启动16个应用程序实例(比如shell脚本)。当然,这要求您的应用程序能够明智地同时运行多个实例。确切地说,如何划分工作,以便每个过程都能承担其中的一部分,这取决于工作的性质。在

我预计一个单一的GigE链接在你有16个核心运行完全倾斜之前就饱和了。确保你关注的是系统中的瓶颈。正如Steve-o所说,您可能还需要在机器中安装多个nic。在

相关问题 更多 >