dpdk框架与原理 (基于pcie设备)
DPDK全称为Date planedevelopment kit,是一个用来进行包数据处理加速的软件库。与传统的数据包处理相比,DPDK具有以下特点:
- 轮询:在包处理时避免中断上下文切换的开销,
- 用户态驱动:规避不必要的内存拷贝和系统调用,便于快速迭代优化
- 亲和性与独占:特定任务可以被指定只在某个核上工作,避免线程在不同核间频繁切换,保证更多的cache命中
- 降低访存开销:利用内存大页HUGEPAGE降低TLB miss,利用内存多通道交错访问提高内存访问有效带宽
- 软件调优:cache行对齐,预取数据,多元数据批量操作
绕过内核方式
通过mmap将pcie设备的bar空间映射到用户空间,之后对其进行操作即可
技术点
1)UIO
2)HugePage
3)Cpu Affinity
内核收数据包处理流程:网卡收到报文后,通过DMA机制将报文放到内存;网卡触发中断通知系统有报文到达,系统分配sk_buff,将报文copy到sk_buff;经过协议栈处理,将报文传送到用户态应用程序处理。
网卡读写数据流程
轮询驱动模式EAL
网卡IO性能优化
DPDK虚拟化技术
./setup.sh
arp映射
arp -a查看mac地址