分类: LINUX
2013-03-02 23:17:18
lenky有测试过DPDK的延迟吗?
我这边的测试结果是:(千兆网卡82580,纯转发模式)
平均延迟可以在20us以内,但是最大延迟总会超过1000us,就算是10Mbit每秒的低压力下,最大延迟也会超过1000us。
我想可能是dpdk自身的原因吧:DPDK使用进程来读取和发送数据包,而进程的优先级是较低的,cpu随时都可能被硬中断或者软中断占用,或者其它进程占用,这就可能导致DPDK在较长时间内无法使用cpu,最终导致丢包,或者延迟加大。
DPDK模型目前有个比较突出的问题是应用层驱动要采取轮询方式收包,没有中断优先级的概念,如果收包逻辑夹杂有其它业务逻辑可能会导致收包不及时而丢包,所以需要根据每一个包的处理逻辑复杂度来调节每间隔处理多少包就必须去进行一次收包操作;要么单独出计算资源(也就是cpu)专注收包,然后对包进行cpu间传递给其它业务计算资源进行处理,要么增加定时器,定时收包,但不管怎样,这都将对整体架构设计上带来一些困难,并且导致性能严重下降。