【DPDK】初识内核旁路DPDK的技术背景及核心思想

一.传统内核网络协议栈面临的问题

在操作系统的设计中,内核通过硬件抽象和硬件隔离的方法,给上层应用程序的开发带来了简便性,但也导致了一些性能下降。在网络方面,主要体现在整体吞吐率的减小和报文延迟的增加上。
主要性能缺陷包括以下几点:

1.网卡中断

轮询与中断时操作系统与硬件设备进行I/O通信的两种主要方式。在一般情况下,网络数据包的到来都是不可预测的,若采用轮询方式则会造成很高的CPU负载,因此主流操作系统都会采用中断的方式来处理网络的请求
然而,随着高速网络接口等技术的迅速发展,10Gbit/s,40Gbit/s,甚至100Gbit/s的网络接口已经出现。随着网络I/O速率的不断提升,网卡面对大量的高速数据分组将会引发频繁的中断,每一次的中断都会引起一次上下文切换,操作系统都需要保存和恢复相应的上下文,造成较高的时延,并引起吞吐量下降。

2.内存拷贝

为了使位于用户空间的应用程序能够处理网络数据,内核首先需要将收到的网络数据从内核空间拷贝到用户空间,同样,为了发送网络数据,也需要进行从用户空间到内核空间的数据拷贝。每次拷贝都会占用大量的CPU,内存带宽等资源,代价昂贵

3.锁

在Linux内核的网络协议栈实现中,存在大量的共享资源的访问。当多个进程需要对某一共享资源进行操作时,就需要通过锁的机制来保证数据的一致。然而,为共享资源上锁或者去锁的过程通常需要几十纳秒。此外,锁的存在也降低了整个操作系统的并发性能

4.缓存未命中

缓存能够有效提高系统性能,如果因不合理的设计而造成频繁的缓存未命中,会严重削弱数据平面的性能。在缓存命中与不命中的情况下,数据操作耗时相差数倍。如果系统设计时忽略这一点,存在频繁的跨核调用,由此带来的缓存未命中会造成严重的数据读写时延,从而降低系统的整体性能。

二.内核旁路技术

在通用处理器上开发高性能数据处理应用,主要有两大主流开发平台:一类是基于操作系统的内核;另一类是内核旁路方案。
内核旁路顾名思义,即绕过内核中的低效模块,直接操作硬件资源
在这里插入图片描述
内核旁路技术,就是应用程序不通过内核直接操作硬件,没有用户空间和内核空间之间的切换,提高了效率。同时将网络驱动内核移到用户空间后,即使出问题也不会像之前内核那样导致整个操作系统崩溃,这也是内核旁路技术带来的另外一个好处。

三.DPDK的核心思想

DPDK是一个高效的报文收发的I/O框架,不仅支持众多的网卡类型,也有多种内存和CPU调度的优化方案。在DPDK之上还有VPP,fstack 等网络应用和网络协议栈的实现。

1.轮询模式

DPDK轮询网卡是否有网络报文的接受和发送,这样避免了传统网卡驱动的中断上下文的开销,当报文的吞吐量大的时候,性能及延时的改善十分明显。

2.用户态驱动

DPDK通过用户态驱动的开发的框架在用户态操作设备及数据包,避免了不必要的用户态和内核态之间的数据拷贝和系统调用。同时,为开发者开拓了更广阔的天地,比如快速迭代及程序优化。

3.降低访问存储开销

高性能数据包处理意味着处理器需要频繁访问数据包。显然降低访问存储开销可以有效的提高性能。DPDK使用大页降低TLB未命中率,保持缓存对齐避免处理器之间缓存交叉访问,利用预取等指令提高缓存的访问率。

4.亲和性和独占

利用线程的CPU亲和绑定方式,将特定的线程指定在固定的核上工作,可以避免线程在不同核间频繁切换带来的开销,提高可扩展性,更好地达到并行处理提高吞吐量的目的。

5.批处理

DPDK使用批处理的概念,一次处理多个包,降低了一个包处理的平均开销。

6.利用IA新硬件技术

IA的新指令、新特性都是DPDK挖掘数据包处理性能的源泉。比如利用vector 指令并行处理多个报文,原子指令避免锁开销等。

7.软件调优

软件调优散布在 DPDK 代码的各个角落,包括利用threshhold的提高 PCI带宽的使用率,避免Cache Miss(缓存不命中)以及 Branch Mispredicts(分支错误预测)的发生等。

8.充分挖掘外部设备潜能

以网卡为例,一些网卡的功能,例如RSS、Flow director、TSO等技术可以被用来加速网络的处理。比如RSS可以将包负载分担到不同的网卡队列上,DPDK多线程可以分别直接处理不同队列上的数据包。除以太网设备网卡以外,DPDK现已支持多种其他设备,例如crypto设备,这些专用硬件可以被DPDK应用程序用来加速其网络处理。

  • 23
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值