DPDK环境配置

DPDK环境配置

DPDK(Data Plane Development Kit)是一个开源的软件框架,最初由Intel开发,旨在提升数据包处理性能,尤其是在Intel架构的处理器上。它允许开发者在用户空间(user space)而不是传统的内核空间(kernel space)实现高速的数据包处理,从而绕过了Linux内核协议栈,减少了上下文切换和中断处理的开销。

DPDK的关键特点和优势包括:

  1. 高性能: 通过直接访问硬件资源(如大页内存、轮询模式的网卡驱动)和优化的数据路径,显著提高了数据包的处理速度和系统吞吐量。
  2. 用户空间处理: 应用程序可以直接在用户空间操作数据包,无需经过内核,降低了处理延迟。
  3. 支持多核并行处理: 充分利用多核CPU的并行处理能力,每个核心可以独立处理数据包,实现线性可扩展性。
  4. 广泛兼容性: 虽然最初针对Intel处理器优化,但DPDK已逐渐支持其他架构,如NXP的LS系列SoC。
  5. 丰富的库函数: 提供了一系列高度优化的库函数,包括内存管理、队列、定时器、Hash表等,便于开发者构建高性能的网络应用。
  6. 灵活的编程模型: 支持多种编程语言和模型,开发者可以根据需求选择最合适的开发方式。

DPDK常应用于需要高性能数据处理的场景,如软件定义网络(SDN)、网络功能虚拟化(NFV)、高性能路由器、负载均衡器、数据包过滤和分析等领域。由于其对数据平面处理的显著加速效果,DPDK已成为提升云服务和数据中心网络性能的重要工具之一。

1、虚拟机创建多块网卡,或者物理机安装多快网卡

在这里插入图片描述

2、安装相关依赖
# 基础工具更新安装
sudo apt-get update 
sudo apt-get upgrade 
apt install net-tools
apt install git
# DPDK编译依赖
apt-get install meson
apt install python3-pyelftools
apt-get install pkg-config
3、编译DPDK
# 下载dpdk软件包
wget https://fast.dpdk.org/rel/dpdk-22.07.tar.xz
tar xf dpdk-22.07.tar.xz
cd dpdk-22.07
meson  build
cd build
# 编译和安装
ninja
ninja install
4、编译igb_uio驱动
git clone http://dpdk.org/git/dpdk-kmods
cd dpdk-kmods/linux/igb_uio
make

编译DPDK例子

cd ./examples/helloworld
make

挂载igb_uio驱动

cd dpdk-kmods/linux/igb_uio
modprobe uio
insmod igb_uio.ko intr_mode=legacy
# 若出现insmod: ERROR: could not load module igb_uio.ko: No such file or directory错误,说明DPDK版本和igb_uio版本不对,需要重新编译igb_uio驱动
5、分配大页缓存
echo 512 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
6、DPDK绑定网卡
# 查看所有网卡信息
ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000link/ether 00:0c:29:e3:dd:b8 brd ff:ff:ff:ff:ff:ffaltname enp2s1
3: ens37: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel state DOWN mode DEFAULT group default qlen 1000link/ether 00:0c:29:e3:dd:c2 brd ff:ff:ff:ff:ff:ffaltname enp2s5
4: ens38: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000link/ether 00:0c:29:e3:dd:cc brd ff:ff:ff:ff:ff:ffaltname enp2s6
# 将需要绑定的网卡下线
ifconfig ens37 down
ifconfig ens38 down
# dpdk绑定网卡
dpdk-devbind.py -b igb_uio ens37 ens38

查看网卡状态

root@xxx:/home/dpdk/dpdk-22.07/dpdk-kmods/linux/igb_uio# dpdk-devbind.py --statusNetwork devices using DPDK-compatible driver
============================================
0000:02:05.0 '79c970 [PCnet32 LANCE] 2000' drv=igb_uio unused=pcnet32,vfio-pci
0000:02:06.0 '79c970 [PCnet32 LANCE] 2000' drv=igb_uio unused=pcnet32,vfio-pciNetwork devices using kernel driver
===================================
0000:02:01.0 '79c970 [PCnet32 LANCE] 2000' if=ens33 drv=pcnet32 unused=igb_uio,vfio-pci *Active*
7、执行dpdk案例
root@xxx:/home/dpdk/dpdk-22.07/examples/helloworld/build# ./helloworld
EAL: Detected CPU lcores: 8
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
TELEMETRY: No legacy callbacks, legacy socket not created
hello from core 1
hello from core 2
hello from core 3
hello from core 4
hello from core 5
hello from core 6
hello from core 7
hello from core 0
8、解绑网卡
# 查看网卡 pci 设备号
root@xxx:/home/dpdk/dpdk-22.07/dpdk-kmods/linux/igb_uio# lspci | grep Eth
02:01.0 Ethernet controller: Advanced Micro Devices, Inc. [AMD] 79c970 [PCnet32 LANCE] (rev 10)
02:05.0 Ethernet controller: Advanced Micro Devices, Inc. [AMD] 79c970 [PCnet32 LANCE] (rev 10)
02:06.0 Ethernet controller: Advanced Micro Devices, Inc. [AMD] 79c970 [PCnet32 LANCE] (rev 10)
# 解绑两个网卡的 igb_uio 驱动,绑定 e1000 驱动:
dpdk-devbind.py -u 02:05.0 02:06.0
dpdk-devbind.py -b e1000  02:02.0 02:03.0
# 启动网卡
ifconfig ens37 up
ifconfig ens38 up

专属学习链接:https://xxetb.xetslk.com/s/36yiy3

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/29236.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Excel批量删除括号里内容,帮你轻松应对!

某次&#xff0c;刘小生从系统导出的人员信息中&#xff0c;“姓名”字段信息中包含了工号信息&#xff0c;需要将“原姓名”中的“工号、括号”信息删除&#xff0c;如果一个一个删除工作量很大&#xff0c;刘小生想到可以用“通配符*”批量替换&#xff0c;解放双手&#xff…

飞天茅台酒的惊魂五日

“电商百亿补贴修改发货规则”导致黄牛资金压力剧增&#xff0c;资金压力之下部分黄牛择低价甩卖&#xff0c;其他求货的酒行、大酒商则选择观望&#xff0c;价格下行压力最终扩散&#xff0c;造成整个回收市场踩踏&#xff0c;价格急速下跌。 不到半年时间&#xff0c;飞天茅台…

初学者必看的web前端开发学习路线,干货满满!

初学者必看的web前端开发学习路线,干货满满&#xff01; 随着互联网的深入发展,前端工程师这个岗位在市场上的需求&#xff0c;薪资也是很可观的。前端很火&#xff0c;想自学前端的人也很多。包括一些学生、上班族、以前的UI&#xff0c;java&#xff0c;或完全零基础&#xf…

免费无版权可商用资源|自媒体创业者、设计师、电商商家必备

1.前言 小伙伴们大家好&#xff0c;欢迎来到天夏Ai&#xff0c;这里专注于分享人工智能精品资源&#xff1a;Ai副业项目、Ai效率神器&#xff01;和你一起共享Ai信息&#xff0c;分享Ai副业项目资源&#xff0c;开启智能副业赚钱新时代&#xff01; 今天为大家分享免费无版权可…

Web 前端开发趋势

前端开发领域&#xff0c;新技术、开发趋势、库和框架不断涌现&#xff0c;变化并不陌生。最近发生的一些事件正在改变开发人员构建网站和 Web 应用的方式 虽然跟上前端生态系统的变化可能具有挑战性&#xff0c;但作为专业人士&#xff0c;保持技能的更新有助于我们开展工作。…

模块一:登录模块

模块一&#xff1a;登录模块 发送验证码 Controller层 /*** 发送手机验证码*/PostMapping("code")public Result sendCode(RequestParam("phone") String phone, HttpSession session) {return userService.sendCode(phone, session);}Service接口 publ…

PBC密码库安装及使用教程

文章目录 1.PBC库介绍2.PBC库安装3.PBC库使用4.相关API4.1 配对的初始化和释放4.2 元素的初始化和释放4.3 元素的赋值4.4 哈希4.5 元素的常用运算4.6 元素的幂运算4.7 元素的比较4.8 从群中随机选取一个元素&#xff08;常用&#xff09;4.9 配对的运算4.10 小结 5.Some exampl…

游戏心理学Day17

游戏评选中的心理因素 心理学博士杰米马迪根提出了影响年度最佳游戏评选的五大心理因素&#xff0c;这对参赛者和评委都颇具意义 认知偏差 许多年度游戏评选&#xff0c;比如最佳叉叉类游戏&#xff0c;最后总会有两个竞争者打成平局&#xff0c;这是游戏评审过程就变成了一…

代码随想录算法训练营第39天|● 62.不同路径 ●63. 不同路径 II

不同路径 62. 不同路径 - 力扣&#xff08;LeetCode&#xff09; 1.确定dp数组&#xff08;dp table&#xff09;以及下标的含义 dp[i][j] &#xff1a;表示从&#xff08;0 &#xff0c;0&#xff09;出发&#xff0c;到(i, j) 有dp[i][j]条不同的路径。 2.确定递推公式 …

RocketMQ源码学习笔记:NameServer启动流程

这是本人学习的总结&#xff0c;主要学习资料如下 马士兵教育rocketMq官方文档 目录 1、Overview2、NameServer启动流程2.1、总结2.2、NamesrvController2.2.1、主要职责2.2.2、关键的成员变量2.2.3、核心代码2.2.4、值得注意的点 1、Overview NameServer主要就做三件事 Nam…

vue3的基本使用方法

【 vue3实例 】 【 0 】对象、方法和属性 对象&#xff08;Object&#xff09;&#xff1a; 对象是编程中的一个数据结构&#xff0c;它可以包含多种数据类型&#xff0c;包括数字、字符串、布尔值、数组、其他对象等。对象通常由一系列属性和方法组成。在面向对象编程&…

超高清图像生成新SOTA!清华唐杰教授团队提出Inf-DiT:生成4096图像比UNet节省5倍内存。

清华大学唐杰教授团队最近在生成超高清图像方面的新工作&#xff1a;Inf-DiT&#xff0c;通过提出一种单向块注意力机制&#xff0c;能够在推理过程中自适应调整内存开销并处理全局依赖关系。基于此模块&#xff0c;该模型采用了 DiT 结构进行上采样&#xff0c;并开发了一种能…

高考专业抉择计算机专业热度不减,兴趣、实力与挑战并存。

作为一名即将步入大学校门的高考生&#xff0c;我对于计算机相关专业是否仍是热门选择感到困惑。在过去几年里&#xff0c;计算机科学与技术、人工智能、网络安全、软件工程等专业一直备受追捧&#xff0c;吸引了无数学生。然而&#xff0c;随着市场竞争加剧和市场饱和度提高&a…

一种革命性的速度检测算法

YOLO&#xff1a;一种革命性的速度检测算法 一、引言 在当今的计算机视觉领域&#xff0c;目标检测是一个至关重要的研究方向。传统的目标检测方法&#xff0c;如滑动窗口和区域建议网络&#xff08;Region Proposal Network, RPN&#xff09;&#xff0c;虽然取得了一定的成…

【Linux】进程_8

文章目录 五、进程10. 进程等待阻塞等待和非阻塞等待 11. 进程程序替换 未完待续 五、进程 10. 进程等待 上一篇我们知道了 wait 和 waitpid 函数都有一个 status 参数&#xff0c;这个参数是什么呢&#xff1f;这个参数其实就是进程的返回结果&#xff0c;当子进程结束的时候…

MySQL-----JOIN语句之内连接

在我们使用MySQL进行项目的开发过程中&#xff0c;仅仅对一张表进行操作是远远不够的&#xff0c;真正的应用中经常需要从多个数据表中读取数据。我们在使用的过程中&#xff0c;尝尝通过 SELECT, UPDATE 和 DELETE 语句配合使用 JOIN 来联合多表查询。 JOIN 分类 INNER JOIN…

adversarially有这个单词吗

“Adversarially” 是一个存在的单词&#xff0c;尤其在机器学习和计算机安全领域中常用。它的词根是“adversarial”&#xff0c;表示对抗的、敌对的。因此&#xff0c;“adversarially”意为“以对抗性方式”。 词义和用法 Adversarial: 形容词&#xff0c;表示对抗的&…

鸿蒙开发电话服务:【@ohos.telephony.data (蜂窝数据)】

蜂窝数据 说明&#xff1a; 本模块首批接口从API version 7开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。 导入模块 import data from ohos.telephony.data;data.getDefaultCellularDataSlotId getDefaultCellularDataSlotId(callback: Async…

【5.x】ELK日志分析、集群部署

ELK日志分析 一、ELK概述 1、ELK简介 ELK平台是一套完整的日志集中处理解决方案&#xff0c;将ElasticSearch、Logstash和Kiabana三个开源工具配合使用&#xff0c;完成更强大的用户对日志的查询、排序、统计需求。 一个完整的集中式日志系统&#xff0c;需要包含以下几个主…

中国星网时空信息集团春招Offer面经

本文介绍2024届春招中&#xff0c;中国卫星网络集团有限公司下属中国时空信息集团有限公司中&#xff0c;业务助理岗位1场面试的基本情况、提问问题等。 2024年04月投递了中国卫星网络集团有限公司下属中国时空信息集团有限公司中的业务助理岗位&#xff0c;所属部门为运营中心…