(1) DPDK 简介

1、DPDK 是什么?

DPDK全称 Intel Data Plane Development Kit,是intel提供的数据平面开发工具集,为Intel architecture(IA)处理器架构下用户空间高效的数据包处理提供库函数和驱动的支持。通俗地说,就是一个用来进行 包数据处理加速的软件库

当然现在,也不光只用Intel的处理器支持,还有其它的处理器也慢慢支持DPDK,比如NXP LS系列的众多平台,LS1012A, LS1028A, LS1043A, LS1046A, LS1088A, LS2088A, and LX2160 family of SoCs 等在 DPDK中都已经支持。

换句话说,DPDK 是一个跑在用户空间的,数据包处理加速软件库

DPDK 专注于网络应用中数据包的高性能处理绕过了Linux内核协议栈对数据包处理过程 ,在用户空间上利用自身提供的数据平面库来收发数据包。可以大幅提升IPV4的转发性能。

2、DPDK 解决什么问题的?如何解决?

高速高性能的网络数据包处理。可达到千兆、万兆的速度。

要实现高速、高性能的需求,就要想尽一切办法,降低延迟。

考虑到 linux内核中网络协议栈可能引起的延迟:

  • 不必要的内存拷贝和系统调用
  • 高速网络数据处理时的内存 cache miss 
  • 多核cpu任务切换带来的cpu cache miss
  • 中断上下文切换带来的开销 

基于上述的问题,DPDK均有对应的解决方案。

(1) 为了减少不必要的内存拷贝和系统调用,DPDK中采用 UIO技术,直接将报文拷贝到用户空间处理,避免了很多不必要的内存拷贝和系统调用。

(2) 内存的cache miss 问题,可以通过 大页内存 HUGEPAGE 来解决 ,降低cache miss(访存开销),利用内存多通道交错访问提高内存访问有效带宽,即提高命中率,进而提高cpu访问速度。

(3) 通过CPU亲和性,绑定网卡和线程到固定的core,减少cpu任务切换。特定任务可以被指定只在某个核上工作,避免线程在不同核间频繁切换,保证更多的cache命中。

(4) 通过无锁队列,减少资源竞争。cache行对齐,预取数据,多元数据批量操作。

(5) 通过轮询可在包处理时避免中断上下文切换的开销

3、DPDK 对 NXP LS 系列CPU支持的框架

(1) DPDK 简介_第1张图片

PMD:Pool Mode Driver,轮询模式驱动,通过非中断,以及数据帧进出应用缓冲区内存的零拷贝机制,提高发送/接受数据帧的效率。

EAL:Environment Abstract Layer,环境抽象(适配)层,PMD初始化、CPU内核和DPDK线程配置/绑定、设置HugePage大页内存等系统初始化。

4、DPDK build  and  binary 

DPDK 官方文档:http://doc.dpdk.org/guides-17.05/index.html

DPDK源码(NXP提供):

git clone https://source.codeaurora.org/external/qoriq/qoriq-components/dpdk -b github.qoriq-os/
integration

先介绍下 编译DPDK出来的 binary 文件

(1) DPDK 简介_第2张图片

(1) DPDK 简介_第3张图片

(1) DPDK 简介_第4张图片

关于如何 build DPDK 可以参考 LSDKUG_Rev19.09.pdf 第9章节。

你可能感兴趣的:(NXP-DPDK,DPDK,DPAA)