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.rhkb.cn/news/352079.html

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

相关文章

github国内加速访问有效方法

这里只介绍实测最有效的一种方法&#xff0c;修改主机的Hosts文件&#xff0c;如果访问github网站慢或者根本无法访问的时候可以采用下面方法进行解决。 1、搜索一个IP查询网站 首先百度搜索选择一个IP查询的网站&#xff0c;这里我用下面这个网站&#xff08;如果该网站失效…

重新安装TortoiseGit后提示权限错误问题解决

今天在Windows11系统中下载安装使用TortoiseGit可视化Git工具&#xff0c;进行代码提交管理。 由于电脑之前是一位开发人员在使用&#xff0c;所以曾经安装使用过这个工具。 重新安装好软件后&#xff0c;在coding网站中复制代码路径后&#xff0c;在本地目录通过鼠标右键选择…

电影《加菲猫家族》观后感

上周看了电影《加菲猫家族》&#xff0c;本片其中有很多明亮的画面&#xff0c;相关艳丽的色彩&#xff0c;充满温馨的场景&#xff0c;很符合加菲猫的一贯画风&#xff0c;即使反派出场时&#xff0c;带有阴暗的感觉&#xff0c;看起也不是特别吓人&#xff0c;比较欢乐气氛&a…

找不到com.fasterxml.jackson.core.exc.StreamWriteException的类文件

1. 前言: 使用springboot搭建的项目, 需要使用 jackson 更改json文件的内容; maven管理jar包, 导入jar包版本信息如下: <!-- 读写json文件所需依赖 --> <dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databin…

数据中台-知识图谱平台

【数据分析小兵】专注数据中台产品领域,覆盖开发套件,包含数据集成、数据建模、数据开发、数据服务、数据可视化、数据治理相关产品以及相关行业的技术方案的分享。对数据中台产品想要体验、做二次开发、关注方案资料、做技术交流的朋友们&#xff0c;可以关注我。 1. 概述 随着…

[element-ui]el-select多选选择器选中其中一个选项,不可删除

背景&#xff1a; 产品真的很多奇奇怪怪的需求&#xff0c;一边吐槽一边实现。 前提&#xff1a;选择器作为表格的筛选项&#xff0c;提供三个选项值。 要求&#xff1a;默认选中其中一个值&#xff0c;这个值不可删除。 如图&#xff1a; 小声吐槽&#xff1a;搞这些有什么…

样本学习:当AI遇上“少见多怪”

东汉名臣牟融在其著作《牟子》写道&#xff1a;“少所见&#xff0c;多所怪&#xff0c;睹橐驼&#xff0c;谓马肿背。”意思是见闻少的人遇到不常见的事物就觉得奇怪&#xff0c;见到骆驼也以为是背肿了的马。因此&#xff0c;后人总用“少见多怪”来嘲笑见识浅陋的人。然而&a…

Ps:脚本事件管理器

Ps菜单&#xff1a;文件/脚本/脚本事件管理器 Scripts/Script Events Manager 脚本事件管理器 Script Events Manager允许用户将特定的事件&#xff08;如打开、存储或导出文件&#xff09;与 JavaScript 脚本或 Photoshop 动作关联起来&#xff0c;以便在这些事件发生时自动触…

Excel和Word等工具小技能分享汇编(一)

这里汇集刘小生前期微信公众号分享的Excel和Word等工具小技能&#xff0c;为方便大家查看学习&#xff0c;刘小生对其进行分类整理&#xff0c;后期也会不定期整理更新&#xff0c;如有想学习交流或其他小技巧需求&#xff0c;欢迎留言&#xff0c;我们一起学习进步&#xff01…

云动态摘要 2024-06-17

给您带来云厂商的最新动态&#xff0c;最新产品资讯和最新优惠更新。 最新优惠与活动 [低至1折]腾讯混元大模型产品特惠 腾讯云 2024-06-06 腾讯混元大模型产品特惠&#xff0c;新用户1折起&#xff01; 云服务器ECS试用产品续用 阿里云 2024-04-14 云服务器ECS试用产品续用…

B端业务需求分析的3大注意事项

通过深入分析业务需求&#xff0c;可以准确理解B端用户的具体需求&#xff0c;帮助项目团队设计出真正解决企业问题、提高工作效率的产品或服务。这减少了后期变更&#xff0c;节约了时间和资源。如果没有深入分析业务需求&#xff0c;产品或服务功能可能与实际业务需求脱节&am…

Java家政预约系统源码 家政上门APP源码 家电安装、维修、清洗、美容系统源码、家政系统各端功能细分

Java家政预约系统源码 家政上门APP源码 家电安装、维修、清洗、美容系统源码、家政系统各端功能细分 家政服务系统是一种提供家政服务的系统&#xff0c;它可以为客户提供上门家庭清洁、钟点工、保姆、月嫂、育婴师、护理员等家政服务。节省时间和成本&#xff0c;提高效率&…

「网络原理」IP 协议

&#x1f387;个人主页&#xff1a;Ice_Sugar_7 &#x1f387;所属专栏&#xff1a;计网 &#x1f387;欢迎点赞收藏加关注哦&#xff01; IP 协议 &#x1f349;报头结构&#x1f349;地址管理&#x1f34c;动态分配 IP 地址&#x1f34c;NAT 机制&#xff08;网络地址映射&am…

从11个视角看全球Rust程序员1/4:深度解读JetBrains最新报告

讲动人的故事,写懂人的代码 五个月前,编程界的大佬JetBrains发布了他们的全球开发者年度报告。 小吾从这份报告中找出了下面11个关于全球程序员如何使用Rust的有趣的趋势,让你学习和使用Rust更轻松。 1 这两年有多少程序员在工作中使用了Rust? 2 全球程序员使用Rust有多…

一套上门家政小程序源码,java上门家政app源码,家政服务管理后台系统源代码

一套上门家政小程序源码&#xff0c;上门家政app源码&#xff0c;家政服务管理后台系统源码 家政上门系统开发端口组成&#xff1a;用户端app技工端apppc管理后台&#xff1a;Uniapp开发&#xff0c;系统可以打包&#xff1a;安卓、ios、h5、微信小程序、公众号。 一、用户端&…

PHP邮箱服务器搭建与配置教程?如何使用?

PHP邮箱服务器搭建的步骤&#xff1f;服务器搭建的注意事项&#xff1f; 在当今的数字化时代&#xff0c;电子邮件仍然是沟通和业务处理的重要工具之一。通过PHP搭建和配置一个邮箱服务器&#xff0c;您可以实现自主掌控邮件系统&#xff0c;确保数据的安全性和隐私性。AokSen…

算法02 递归算法及其相关问题【C++实现】

递归 在编程中&#xff0c;我们把函数直接或者间接调用自身的过程叫做递归。 递归处理问题的过程是&#xff1a;通常把一个大型的复杂问题&#xff0c;转变成一个与原问题类似的&#xff0c;规模更小的问题来进行求解。 递归的三大要素 函数的参数。在用递归解决问题时&…

redis 05 复制 ,哨兵

1.redis的复制功能&#xff0c;使用命令slaveof 2. 2.1 2.2 2.2 补充 2.3 2.3.1 2.3.1.1 2.3.1.2 2.3.1.3 3 3.1 3.2 例子 4.1 这里是从客户端发出的指令 4.2 套接字就是socket 这里是和redis事件相关的知识 4.3 ping一下 4.4 这里的路径 是自…

在微信公众号上怎么添加预定房间功能

在这个快节奏的现代社会&#xff0c;人们对于便捷与高效的需求日益增加。特别是在旅行或出差时&#xff0c;能够快速、方便地预订一间舒适的房间&#xff0c;无疑是每个人心中的小确幸。今天&#xff0c;我们为您带来了一项革命性的服务——微信公众号上的房间预定功能&#xf…

蚂蚁集团:2023年科研投入211.9亿元

6月13日&#xff0c;蚂蚁集团发布2023年可持续发展报告。报告显示&#xff0c;2023年蚂蚁集团科研投入达到211.9亿元&#xff0c;再创历史新高&#xff0c;蚂蚁科技投入的重点是人工智能和数据要素技术。 蚂蚁集团董事长兼CEO井贤栋在报告致辞中说&#xff0c;面向未来&#x…