1.去除中断
传统的收发报文方式都必须采用硬中断来做通讯,每次硬中断大约消耗100微秒,这还不算因为终止上下文所带来的Cache Miss。
DPDK采用轮询模式驱动(PMD)。
PMD由用户空间的特定的驱动程序提供的API组成,用于对设备和它们相应的队列进行设置。
特点:去除中断,避免内核态和用户态内存拷贝,减少系统开销,从而提升I/O吞吐能力
2.处理数据包的环境
传统的处理数据包,数据必须从内核态用户态之间切换拷贝带来大量CPU消耗,全局锁竞争。
DPDK处理数据包在用户态进行。
3.收发包的开销
传统收发包都有系统开销。
DPDK采用Ring Queue(环形队列)和HUGEPAGE(大页内存)。
Ring Queue:针对单个或多个数据包生产者、单个数据包消费者的出入队列提供无锁机制,有效减少系统开销。
如果有多个核可能需要同时访问一个网卡,那DPDK中会为每个核准备一个单独的接收队列/发送队列,这样避免了竞争,也避免了cache一致性问题。
HUGEPAGE:利用内存大页HUGEPAGE降低TLB(Translation Lookaside Buffer) miss,利用内存多通道交错访问提高内存访问有效带宽,降低访存开销。
4.多核情况
传统方式,内核工作在多核上,为了可以全局一致,即使采用Lock Fr