博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DPDK-----初识
阅读量:6982 次
发布时间:2019-06-27

本文共 896 字,大约阅读时间需要 2 分钟。

(一)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 阅读(
...) 评论(
...)

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

你可能感兴趣的文章
使用Python登录Github网站
查看>>
Android wifi powersave
查看>>
Linux安装telnet
查看>>
Access restriction 问题解决
查看>>
virtualenv 运行python 解决依赖冲突问题 尤其是django那种蛋疼的版本问题
查看>>
多核加速处理图像
查看>>
『原创』用C++开发WM应用系列(3)——发送SMS
查看>>
Spring 的优秀工具类盘点,第 2 部分: 特殊字符转义和方法入参检测工具类
查看>>
一个奇怪的编码 big5-hkscs
查看>>
不同情况下的高地址与低地址
查看>>
tcp/ip --IP:网际协议
查看>>
深入理解JavaScript系列(6):S.O.L.I.D五大原则之单一职责SRP
查看>>
onSaveInstanceState和onRestoreInstanceState触发的时机
查看>>
设计模式学习02—工厂模式
查看>>
html5--6-10 CSS选择器7--伪类选择器
查看>>
激光数据匹配(MATLAB Robotics System Toolbox)
查看>>
file_put_contents执行返回false,file_put_contents false(linux服务器httpd)
查看>>
Dependency Walker (depends.exe) Home Page
查看>>
[原]软件设计的一些感悟
查看>>
Android---- 如何把calendar.getTimeInMillis()获得的毫秒时间
查看>>