DPDK-----初识

本文深入探讨了DPDK技术,分析其在解决传统网络设备驱动处理中延时过长、内存拷贝频繁及线程切换等问题上的独特优势。通过轮询、用户态驱动、亲和性和独占等特性,DPDK显著提升了数据包处理速度,降低了内存访问开销,为基于IA多核处理器的高速包处理提供了高性能基础。
摘要由CSDN通过智能技术生成

(一)DPDK出现之前的问题:

以Linux 为例,传统网络设备驱动包处理的动作可以概括如下:

  1. 数据包到达网卡设备。
  2. 网卡设备依据配置进行 DMA 操作。
  3. 网卡发送中断,唤醒处理器。
  4. 驱动软件填充读写缓冲区数据结构。
  5. 数据报文达到内核协议栈,进行高层处理。
  6. 如果最终应用在用户态,数据从内核搬移到用户态。
  7. 如果最终应用在内核态,在内核继续进。

因此,可能产生以下问题:

1:数据包产生通过中断上报处理器,再到处理,延时过长

2:数据报文先送到内核协议栈进行高层处理,再复制到用户空间的耗时

3:用户态线程由操作系统调度,除去本身任务切换的开销,由切换导致的cache替换,或是cache missing等会对性能造成负面影响

...........

(二)DPDK的特点(优势):

轮询:在系统被中断唤醒后,使用轮询的方式一次处理多个数据包,直到网络再次空闲重新转入中断等待;避免了中断上下文切换的开销;

用户态驱动:避免了内存拷贝和系统调用;并且对于数据buff的重新定义不受限于内核的数据结构;也方便快速的迭代优化;

亲和性和独占:指定特定任务在某个核上工作,所谓绑核。避免了线程在不同核间频繁的切换,核间的切换也容易导致cache missing和cache write back造成的大量损失。如果更进一步的限定了核不参与系统调度,可以进一步实现独占,避免了核内的任务切换开销;

降低访存开销:数据包处理是I/O密集型的。通过内存大页降低TLB missing、优化cache等方式减少内存I/O的开销。

软件调优:从软件-代码结构上来优化。比如结构的cache line对齐等方式;

硬件加速:包括利用一些IA的最新指令集或是挖掘网卡的本身性能来实现加速;

DPDK作为基于IA多核处理器的高速包处理平台,以软件库的形式,为上层应用的开发提供了一个高性能的基础I/O开发包;

posted on 2018-11-26 11:49 Rex_Zhang 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/rex-2018-cloud/p/10019542.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值