我有一个非常简单的客户端应用程序。它只发送udp包作为
尽可能快。
代码非常简单:我说明每个数据包的大小(以字节为单位),
远程地址和端口数
然后我为每个端口打开一个线程,并尽可能快地发送数据包。
现在问题是当我在10Gbit光纤连接上运行应用程序时:
packet_size = 1400
我只能利用~25%的NIC带宽(而且CPU也很高)。
当我运行程序时:
packet_size = 50000
我设法利用~97%的NIC带宽(并且CPU低于10%)。
我对此的解释是涉及较小数据包的系统调用次数
想象一下,每当我发送一个大小为1500字节的数据包时,我就会调用操作系统
问题是我想避免IP碎片,仍然能够使用
NIC的全部潜力。任何想法我怎么能实现这一目标?