DPDK环境配置

news2024/11/26 12:37:36

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 1000
    link/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 1000
    link/ether 00:0c:29:e3:dd:b8 brd ff:ff:ff:ff:ff:ff
    altname enp2s1
3: ens37: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel state DOWN mode DEFAULT group default qlen 1000
    link/ether 00:0c:29:e3:dd:c2 brd ff:ff:ff:ff:ff:ff
    altname enp2s5
4: ens38: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 00:0c:29:e3:dd:cc brd ff:ff:ff:ff:ff:ff
    altname 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 --status

Network 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-pci

Network 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.coloradmin.cn/o/1832594.html

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

相关文章

EasyRecovery2024你的电脑数据恢复神器!

EasyRecovery电脑数据恢复软件&#xff0c;简直是我的数据救星啊&#xff01;&#x1f64c;以前不小心删除了一些重要的文件&#xff0c;整个人都慌了神。但自从有了它&#xff0c;再也不用担心数据丢失的问题啦&#xff01;&#x1f481;‍♀️ 这款神奇的软件不仅可以恢复误…

持续学习的综述: 理论、方法与应用

摘要 为了应对现实世界的动态&#xff0c;智能系统需要在其整个生命周期中增量地获取、更新、积累和利用知识。这种能力被称为持续学习&#xff0c;为人工智能系统自适应发展提供了基础。从一般意义上讲&#xff0c;持续学习明显受到灾难性遗忘的限制&#xff0c;在这种情况下…

个人在家如何获取World Scientific文献的经验分享

今天有位同学求助一篇World Scientific文献&#xff0c;他的学校虽然有这个数据库&#xff0c;但订购的该数据库资源内容有限&#xff0c;这位同学所需的文献不在学校订购范围内所以下载不了。今天小编就分享一个在家就可获取各个数据库文献的方法。本文以这篇求助文献为例&…

TC3xx A\B SWAP机制的小细节(2)

目录 1.引入 2.TC3xx Swap机制小细节 3.小结 1.引入 上文TC3xx A\B SWAP机制的小细节(1)-CSDN博客主要把OTA的概念&#xff0c;以及MCU的硬件A\B Swap机制做了简单介绍&#xff0c;下面我们来聊聊TC3xx的SWAP机制 2.TC3xx Swap机制小细节 英飞凌TC3xx提供了硬件SOTA机制&…

一招解决家里粉尘螨虫太多难题?家用空气净化器哪款品牌效果好?

一到夏天&#xff0c;两天不打扫家里&#xff0c;家里就会布满一层粉尘。而且春夏的气候也是粉尘螨虫生长和繁殖疯狂时期&#xff0c;一不注意室内空气污染卫生的情况下&#xff0c;就会加剧尘螨的滋生&#xff0c;体质弱、敏感的人群生活在这样的空气环境下&#xff0c;还会增…

Web数据提取:Python中BeautifulSoup与htmltab的结合使用

1. 引言 Web数据提取&#xff0c;通常被称为Web Scraping或Web Crawling&#xff0c;是指从网页中自动提取信息的过程。这项技术在市场研究、数据分析、信息聚合等多个领域都有广泛的应用。Python社区提供了丰富的工具和库来支持这一技术&#xff0c;其中BeautifulSoup和htmlt…

五大维度大比拼:ChatGPT比较文心一言,你的AI助手选择指南

文章目录 一、评估AI助手的五个关键维度二、ChatGPT和文心一言的比较 评估AI助手的五个关键维度&#xff0c;以及ChatGPT和文心一言的比较如下&#xff1a; 一、评估AI助手的五个关键维度 界面友好性 &#xff1a; 评估标准&#xff1a;用户界面是否直观易用&#xff0c;是否…

NVIDIA发布Nemotron-4 340B 用于生成高质量的合成数据

Nemotron-4 340B 是一系列为 NVIDIA NeMo 和 NVIDIA TensorRT-LLM 优化的模型&#xff0c;包括最先进的指令和奖励模型&#xff0c;以及用于生成式 AI 训练的数据集。 英伟达今日宣布推出 Nemotron-4 340B&#xff0c;这是一系列开放模型&#xff0c;开发者可以使用它们生成用于…

MySQL Server和Server启动程序(一)

MySQL Server mysqld&#xff0c;也称为MySQL Server&#xff0c;是一个单线程多任务的程序&#xff0c;它在MySQL安装中执行大部分工作。它不会生成额外的进程。MySQL Server管理对包含数据库和表的MySQL数据目录的访问。数据目录也是其他信息&#xff08;如日志文件和状态文…

小区噪音监测管理系统设计

一、引言 随着城市化进程的加快&#xff0c;小区居民对于居住环境的要求日益提高。其中&#xff0c;噪音污染已成为影响居民生活质量的重要因素。因此&#xff0c;设计一套小区噪音监测管理系统&#xff0c;对于提升居民的生活品质和小区管理效率具有重要意义。本文将详细阐述…

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

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

如何使用nginx部署https网站(亲测可行)

公司本来有网站sqlynx.com是http运行的&#xff0c;但因为产品出海&#xff0c;基本上都要求使用https&#xff0c;但又需要兼容已有的http服务&#xff0c;所以我自己尝试做了一次https的部署&#xff0c;目前是正常可用的。 目录 步骤 1&#xff1a;安装 Nginx 步骤 2&…

关于从大平台跳转各个应用,更新应用前端包后,显示的仍是旧的内容,刷新应用页面后方才显示新的内容的问题的排查和解决

我们从绿洲物联平台跳转智能锁应用&#xff0c; 如下&#xff0c;我们可以看到&#xff0c;我们是通过a标签去跳转应用的。但是我们打开控制台的话&#xff0c;因为a标签是另外新开一个页面&#xff0c;我们看不到新页面的html文档的加载情况。 我们可以临时把_blank改成_sel…

MySQL约束详解:构建数据完整性基石

目录 MySQL约束1.1 约束1.1 数据类型1.2 主键约束[重要]1.3 自增约束1.4 唯一约束1.5 非空约束1.6 默认值代码演示 1.7 外键约束[了解]思维导图最后 MySQL约束 MySQL作为广泛使用的开源关系型数据库管理系统&#xff0c;其强大的数据约束功能对于维护数据的一致性和准确性至关…

鸿蒙原生App开发之:套用混合app开发思路

2024年&#xff0c;似乎华为迎来了新的企业机遇--鸿蒙独立操作系统。 受到全球国际形势的影响&#xff0c;加之第四次科技革命&#xff08;AI革命&#xff09;冷不丁的出现&#xff0c;在他国AI技术领先的前提下&#xff0c;中国自主研发的独立操作系统再次提上新的战略高度。…

【NLP项目-01】手把手教你基于TF-IDF提取向量+贝叶斯或者随机森林进行文本分类

【NLP项目-01】手把手教你基于TF-IDF提取向量贝叶斯或者随机森林进行文本分类 本次修炼方法请往下查看 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合&#xff0c;智慧小天地&#xff01; &#x1f387; 相关内容文…

List, Set, Map, Queue介绍

Java集合框架是一组接口和实现这些接口的类的集合&#xff0c;它提供了对数据集合的高效率存储和操作。以下是Java集合框架中一些核心接口的介绍&#xff1a; 1.List&#xff1a; List是一个有序的集合&#xff0c;允许包含重复的元素。它提供了按插入顺序访问元素的方法&…

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

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

数据库原理(关系数据库规范化理论)——(4)

一、关系模式规范化的必要性 1.关系可能出现的问题 数据冗余大&#xff1b;插入异常&#xff1b;删除异常&#xff1b;更新异常&#xff1b; 2.关系模式应满足的基本要求 元组的每个分量必须是不可分割的数据项&#xff1b;数据库中的数据冗余应尽可能少&#xff1b;不要出…

AcWing 1273:天才的记忆 ← ST算法求解RMQ问题

【题目来源】https://www.acwing.com/problem/content/1275/【题目描述】 从前有个人名叫 WNB&#xff0c;他有着天才般的记忆力&#xff0c;他珍藏了许多许多的宝藏。 在他离世之后留给后人一个难题&#xff08;专门考验记忆力的啊&#xff01;&#xff09;&#xff0c;如果谁…