我有一个问题,为什么与1500字节的数据包相比,小数据包(即64字节)的机器吞吐量非常差?
我有一个千兆网卡,能够以80MB/s的速度传输1500字节大小的数据包,但在64字节大小的数据包的情况下,我几乎看不出25MB/s左右的数据包。
我知道在1500字节数据包的情况下,我需要发送大约80k pps才能达到线路速率,而对于64字节,大约140万pps。
但是为什么小数据包的吞吐量会有很大的变化呢?是吗?
编辑:在linux中,我使用内存映射将数据包从用户空间传输到内核空间,然后直接写入网络驱动程序进行传输。我发现我的CPU利用率在64字节和1500字节数据包之间是非常低和相同的。

最佳答案

但是为什么小规模的
小包?是吗?
CPU紧张。与它的大小无关,每个传出的包在到达接口之前都要经过大量的处理。换句话说,传输一个小数据包和一个大数据包的“成本”是可比的。
如果你对此感兴趣的话,你可能想研究一下Linux内核中的“GSO”和“UFO”——它是专门为此而开发的。

关于linux - 小数据包吞吐量较小,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13411422/

10-14 03:18