DPDK简介和原理

天翼云开发者社区
• 阅读 124

本文分享自天翼云开发者社区《DPDK简介和原理》,作者:s****n

DPDK是一种绕过内核直接在用户态收发包来解决内核性能的瓶颈技术。 什么是中断 了解DPDK之前,首先需要先了解什么是中断,其实中断就是电信号,中断分两种:硬中断和软中断。

什么是硬中断?硬中断是由与系统相连的外设(比如网卡、硬盘)自动产生的,主要是用来通知操作系统系统外设状态的变化。比如当网卡收到数据包的时候,就会发出一个中断。我们通常所说的中断指的是硬中断(hardirq)。

什么是软中断?软中断为了满足实时系统的要求,中断处理应该是越快越好。linux为了实现这个特点,当中断发生的时候,硬中断处理那些短时间就可以完成的工作,而将那些处理事件比较长的工作,放到中断之后来完成,也就是软中断(softirq)来完成。

硬中断和软中断有两个明显的区别: 其一软中断是执行中断指令产生的,而硬中断是由外设引发的; 其二硬中断的中断号是由中断控制器提供的,软中断的中断号由指令直接指出,无需使用中断控制器。

了解DPDK网络处理流程 了解完中断的原理,我们来对比下传统网络处理流程和有DPDK加持下的处理流程有何不同。 传统网络处理流程:

DPDK简介和原理

dpdk处理流程:

DPDK简介和原理

可以明显看出区别,dpdk可以感知中断,应用层通过内存映射实现和网卡的通讯,减少了IO处理流程。

DPDK的UIO机制

DPDK简介和原理

为了让驱动运行在用户态,Linux提供UIO机制。使用UIO可以通过read感知中断,通过mmap实现和网卡的通讯。 要开发用户态驱动有几个步骤: 开发运行在内核的UIO模块,因为硬中断只能在内核处理 通过/dev/uioX读取中断 通过mmap和外设共享内存

DPDK核心优化:PMD模式 DPDK的UIO驱动屏蔽了硬件发出中断,然后在用户态采用主动轮询的方式,这种模式被称为PMD(Poll Mode Driver)。 UIO旁路了内核,主动轮询去掉硬中断,DPDK从而可以在用户态做收发包处理,带来Zero Copy、无系统调用的好处,同步处理减少上下文切换带来的Cache Miss。

判断环境是否采用dpdk 检验判断环境中是否采用dpdk有两种常用的方法: 1、在计算节点上virsh dumpxml 虚机uuid ,看interface部分,tapxxx就是ovs kernel,vhuxxz就是ovs dpdk 2、nova show看vm详情,能看到flavor extra specs,有huge page基本就是用了ovs dpdk

点赞
收藏
评论区
推荐文章
亚瑟 亚瑟
3年前
IO多路复用
用户空间和内核空间Userspace(用户空间):用户程序的运行空间Kernelspace(内核空间):Linux内核的运行空间当进程运行在内核空间时就处于内核态,当进程运行在用户空间时就处于用户态。为了安全,它们是隔离的,即使用户的程序崩溃了,内核也不受影响。Kernelspace可以执行任意
Wesley13 Wesley13
3年前
IPTABLES简介
iptables防火墙工作原理简介:iptables防火墙工作在网络层,针对TCP/IP数据包实施过滤和限制,iptables防火墙基于内核编码实现,具有非常稳定的性能和高效率;   iptables属于“用户态”的防火墙管理体系。!(https://oscimg.oschina.net/oscnet/691dc3c1cdd75580e336
Stella981 Stella981
3年前
Linux系统调用原理
一、什么是系统调用系统调用 跟用户自定义函数一样也是一个函数,不同的是 系统调用 运行在内核态,而用户自定义函数运行在用户态。由于某些指令(如设置时钟、关闭/打开中断和I/O操作等)只能运行在内核态,所以操作系统必须提供一种能够进入内核态的方式,系统调用 就是这样的一种机制。系统调用 是Linux内核提供的一段
Wesley13 Wesley13
3年前
DPDK
背景最近在做将基于dpdk16.11.1开发的程序,转移到基于dpdk18.11版本下开发。遇到了网卡RSS配置的问题,在这里纪录一下。问题dpdk16.11.1在dpdk16.11.1上的程序如下:staticuint8_trss_intel_key40{0x6D,
Stella981 Stella981
3年前
Linux内核编译及添加系统调用
1总体设计思路系统调用的本质是调用内核函数,以内核态运行程序。为了在内核态下运行,本实验针对Linux的内核进行修改,增加自定义系统调用函数实现用户态程序对任意进程的nice值进行修改或者读取来进行测试。2主要函数的接口设计核心态程序SYSCALL\_DEFINE3(mysetnice,pid\_t,pid,int,flag,i
Wesley13 Wesley13
3年前
F
Fstack简介Fstack粘合了dpdk、用户态协议栈和nginx、redis,弥补了dpdk没有协议栈的不足,并用nginx、redis提供了一个调用应用程序的接口。QuickStartgithub链接(https://www.oschina.net/action/GoToLink
Stella981 Stella981
3年前
Linux探秘之用户态与内核态
关注“aCloudDeveloper”云计算领域大小事,你都能尽在掌握 Unix/Linux的体系架构如下图所示,从宏观上来看,Linux操作系统的体系架构分为用户态和内核态(或者用户空间和内核)。!(https://oscimg.oschina.net/oscnet/5b4a8
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Wesley13 Wesley13
3年前
IO模型详解
IO编程包括:文件读写操作StringIO和BytesIO内存中操作文件和目录OS序列化jsonpickling操作系统内核空间(缓冲区)收发数据:内核态(内核空间)》用户态用户空
Stella981 Stella981
3年前
Linux 面试知识点笔记
问:linux的体系结构?!(https://oscimg.oschina.net/oscnet/7e41e5605a979bbf6cc4263647ae72292f8.jpg)体系结构主要分为用户态(用户上层活动)和内核态内核:本质是一段管理计算机硬件设备的程序系统调用:内核的访问接口,是一种能再简化的操作
天翼云开发者社区
天翼云开发者社区
Lv1
天翼云是中国电信倾力打造的云服务品牌,致力于成为领先的云计算服务提供商。提供云主机、CDN、云电脑、大数据及AI等全线产品和场景化解决方案。
文章
696
粉丝
15
获赞
40