以太网网口流量测试,吞吐量测试
现在有很多硬件平台理论上支持千兆以太网接口,但实际传输速率远远低于千兆,并且丢包率很高。近我做了一些以太网吞吐量和丢包率方面的优化工作,有一些心得和大家分享一下。
二、影响吞吐量和丢包率的因素
1. 网卡DMA缓冲区大小
这个缓冲区决定tx ring buffer和rx ring buffer的大小,如果ringbuffer太小,那么网卡缓存数据包的能力有限,当接收数据能力超过cpu处理能力时就会产生丢包现象。ringbuffer越大,吞吐能力就越强,丢包的概率就越小。
2. CPU处理能力
CPU处理速度越快,网卡接收到的数据包在网卡DMA缓冲区中的存留时间就越短,就可以腾出更多的空间来暂存新接收到的数据包。CPU的处理能力直接决定了系统的吞吐量,运算速度越快,吞吐量越高。
3. 内存总容量
当网卡DMA缓冲区太小时,ringbuffer不够用,会造成网络数据丢包。此时,需要将数据包及时从ringbuffer里面取出来,暂存到接收队列里面(发送数据时同理)。在合适的时机再把数据包上传给协议栈。这种处理方式会瞬时大量消耗系统内存,当吞吐量很大时,会引起内存剩余容量抖动,甚至导致内存不足的异常出现。