目录
DPDK-概述
DPDK是什么
Intel® DPDK全称Intel Data Plane Development Kit,是intel提供的数据平面开发工具集,为Intel architecture(IA)处理器架构下用户空间高效的数据包处理提供库函数和驱动的支持,它不同于Linux系统以通用性设计为目的,而是专注于网络应用中数据包的高性能处理。(主要就是做包转发)
具体体现在DPDK应用程序是运行在用户空间上利用自身提供的数据平面库来收发数据包,绕过了Linux内核协议栈对数据包处理过程。
DPDK: 在IA上做高效包处理
发挥core性能唯一原则: 让数据更接近于core 接近core的--->就是cache
核心目标:把数据移到cache里面 (cache容量有限)
现在的cache在20M以上: 大的好处 可以拿出一部分位做包 [英特尔数据直接IO技术(Intel DDIO)]
(包可以不经过内存,所有的操作都在cache中完成)
prefetch系列指令作用: 影响指令快慢一个比较重要的因素--->数据能不能提前ready
最好的情况: 在处理下一条指令时候 下一条指令的数据已经走到cache中
memory: 有多个channel
如何完整利用内存channel的带宽?
CPU:切换开销大 压榨性能: 不切换
UIO: 在用户态可以做配置
在IA平台上 所有的设备都是PCIe设备 所以IA上基本只有route port
对于PCIe设备: 配置 怎么驱动
一个PCIe设备有一串数字(序列)标记这个设备
UIO: 就是把bar的address 通过mmap映射的用户空间,让用户空间可以访问寄存器
DPDK特点
- 1) 轮询:在包处理时避免中断上下文切换的开销,
- 2) 用户态驱动:规避不必要的内存拷贝和系统调用,便于快速迭代优化
- 3) 亲和性与独占&#