首页 > 其他分享 >DPDK基本原理

DPDK基本原理

时间:2023-09-03 17:33:56浏览次数:46  
标签:中断 基本原理 内核 DPDK 数据包 CPU 内存

内核处理网络数据包弊端

中断处理
处理大量网络数据包时,出现频繁的硬件中断,产生较高的性能开销。

内存拷贝
网络数据包从网卡到应用程序流程是,数据从网卡通过DMA传到内核缓冲区,从内核态拷贝到用户态。

上下文切换
硬件中断、多线程、锁竞争产生上下文切换开销。

CPU缓存失效
数据包处理可能跨多个CPU,例如数据包中断在cpu0,内核态处理在cpu1,用户态处理在cpu2,跨多核容易造成CPU缓存失效,影响性能。

内存管理
传统服务器内存页4K,内存访问速度慢,容易出现缺页异常。

DPDK优势

UIO
通过UIO能够拦截中断,重设中断回调行为,绕过内核协议栈处理流程,用户态完成数据包处理。
内核网络数据包处理流程
硬件中断->取包分发至内核线程->软件中断->内核线程在协议栈中处理包->处理完毕通知用户层->用户层收包->网络层->逻辑层->业务层
DPDK网络数据包处理流程
硬件中断->放弃中断流程->用户层通过设备映射取包->进入用户层协议栈->逻辑层->业务层

内存池技术
在用户态实现了内存池,内核态和用户态内存交互不拷贝,只做控制权转移。收发数据包时,减少了内存拷贝。

大页内存管理
使用1G或者2M大页内存替代普通内存,大页内存不受内核管理,减少缺页异常。

无锁环形队列
基于内核的无锁环形缓冲kfifo实现无锁环形队列。

poll-mode网卡驱动
DPDK网卡驱动完全抛弃中断模式,基于轮询方式收包,避免中断。

NUMA
内存分配上通过proc提供的内存信息,使CPU核尽量使用靠近其所在节点的内存,避免了跨NUMA节点远程访问内存的性能问题。

CPU亲和性
网卡多队列绑核,线程绑核,减少上下文切换,避免CPU缓存失效。

多核调度框架
DPDK基于多核架构,主核完成模块初始化,从核处理业务。

参考资料

https://www.cnblogs.com/linbingfeng/p/16793926.html

标签:中断,基本原理,内核,DPDK,数据包,CPU,内存
From: https://www.cnblogs.com/WJQ2017/p/17675228.html

相关文章

  • 扩容Linux文件系统:从基本原理到实践
    一、引言在Linux系统中,文件系统是存储和组织数据的核心组件。随着应用程序和数据的不断增加,有时候需要扩大文件系统的容量。本文将介绍扩容Linux文件系统的方法和步骤,帮助您轻松应对存储需求。二、准备步骤在进行文件系统扩容之前,需要确保以下事项:了解现有磁盘空间:使用df-h命令查......
  • 三河凡科科技飞讯教学篇:学习振弦采集模块的开发基本原理
    三河凡科科技飞讯教学篇:学习振弦采集模块的开发基本原理振弦采集模块是一种用于测量物体振动、形变、压力等物理量的电子设备。它通过测量物体的振动变化,可以得出物体在不同条件下的动态特性,对于工程设计、科学研究、医学检测等领域都有广泛应用。本文将介绍振弦采集模块的开发基......
  • 线性回归基本原理和公式推导
    回复我们公众号“1号程序员”的“E001”可以获取《BAT机器学习面试1000题》下载链接。[关注并回复:【E001】]线性回归是一种监督式机器学习算法,它计算因变量与一个或多个独立特征之间的线性关系。当独立特征的数量为1时,被称为单变量线性回归;在存在多于一个特征的情况下,被称......
  • Kafka快速实战以及基本原理详解
     这一部分主要是接触Kafka,并熟悉Kafka的使用方式。快速熟练的搭建kafka服务,对于快速验证一些基于Kafka的解决方案,也是非常有用的。一、Kafka介绍​ChatGPT对于ApacheKafka的介绍:ApacheKafka是一个分布式流处理平台,最初由LinkedIn开发并于2011年开源。它主要用于解决大规模......
  • DPDK-22.11.2 [四] 官方basicfwd编译运行讲解
    编译安装dpdk绑定网卡驱动vfio必须有两个网口配置LD_LIBRARY_PATH和PKG_CONFIG_PATH编译运行basicfwd.c/*SPDX-License-Identifier:BSD-3-Clause*Copyright(c)2010-2015IntelCorporation*/#include<stdint.h>#include<stdlib.h>#include<inttypes.h>#incl......
  • DPDK-22.11.2 [三] 官方helloworld编译运行讲解
    先安装dpdk编译完成后,先运行ninjainstall把相关内容安装到指定目录。ls/home/dpdkinstallbinincludelib64sharebin——一些脚本(用于绑定驱动等),编译的测试程序,编译的常用工具include——需要的头文件lib64——编译的类库share——文档相关......
  • DPDK 22.11.2 使用建议
    驱动建议使用vfio-pci,依赖系统的vfioigb_uio从DPDKv20.02开始禁止编译。可以通过CONFIG_RTE_EAL_IGB_UIO打开编译。igb_uio计划迁移到其他项目。uio_pci_generic是linux系统提供的,不支持virtualfunction(VF)。如果想支持virtualfunction(VF),请使用igb_uio,依赖系统的uio。......
  • JavaScript基础:学习JavaScript语言的基本语法和常用操作,了解网页交互的基本原理
    JavaScript是一种广泛应用于网页开发中的脚本语言,它可以与HTML和CSS一起使用,实现网页交互及动态效果。以下是JavaScript的基本语法和常用操作:变量声明:使用var、let或const关键字声明变量。varname="John";letage=25;constPI=3.14;数据类型:包括字符串、数字、布......
  • 传热和传质基本原理-学习笔记
    传热的三种方式:传导:  不同物质形态的传导机理:  气体:气体分子的能量与其随机的平移有关,也和内部旋转和震动运动有关。可以把基于分子的随机运动的净能量传输说成是的能量扩散。       液体:与气体情况几乎相同,但流体分子靠得更近,分子间的相互作用更强,也更频繁。  ......
  • dpdk编译开发
    下载源码http://core.dpdk.org/download/编译http://core.dpdk.org/doc/quick-start/安装python3安装ninjayuminstallninja-build安装mesonpip3installmeson开始编译tarxfdpdk.tar.gzcddpdkmesonbuildninja-Cbuild确定配置好大页内存mkdir......