基于 openEuler 22.03 LTS SP1 构建 DPDK 22.11.8 开发环境指南

基于 openEuler 22.03 LTS SP1 构建 DPDK 22.11.8 开发环境指南

本文详细介绍了在 openEuler 22.03 LTS SP1 操作系统上构建 DPDK 22.11.8 开发环境的完整流程。DPDK 20 版本之后采用 meson+ninja 的编译方式,与早期版本有所不同。本文内容也可作为其他 Linux 发行版构建 DPDK 环境的参考。

环境准备

安装编译依赖包

VERSION=$(uname -r)
sudo yum install -y gcc gcc-c++ make numactl-devel git tar kernel-devel-$VERSION

安装 Meson 构建工具

sudo pip3 install meson

安装 Pyelftools

sudo pip3 install pyelftools

安装 re2c

wget https://github.com/skvadrik/re2c/releases/download/1.0.3/re2c-1.0.3.tar.gz
tar -zxvf re2c-1.0.3.tar.gz
cd re2c-1.0.3/
./configure
make && sudo make install
cd ..

安装 Ninja 构建系统

wget https://github.com/ninja-build/ninja/archive/refs/tags/v1.11.0.tar.gz
tar -zxvf ninja-1.11.0.tar.gz
cd ninja-1.11.0/
python3 configure.py --bootstrap
sudo cp ninja /usr/bin/
cd ..

注意:如果系统没有 python 命令,只有 python3,请使用 python3 configure.py --bootstrap

在这里插入图片描述

DPDK 安装与配置

下载并解压 DPDK

wget http://fast.dpdk.org/rel/dpdk-22.11.8.tar.xz
tar -xvf dpdk-22.11.8.tar.xz
cd dpdk-stable-22.11.8

编译安装 DPDK

meson setup build
cd build
ninja
sudo ninja install  # 默认安装到 /usr/local/lib64
sudo ldconfig

可选:如需指定安装目录,可在 meson 步骤中添加 --prefix=/your/custom/path 参数。

环境变量配置

export PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig
export LD_LIBRARY_PATH=/usr/local/lib64:$LD_LIBRARY_PATH

建议:将上述环境变量添加到 /etc/profile 文件中以实现永久生效。

驱动配置

加载vfio驱动

modprobe vfio enable_unsafe_noiommu_mode=1 # 在iommu不可用时,以非安全模式加载vfio
modprobe vfio-pci 
lsmod|grep vfio  # 检查是否成功

有关非安全模式加载vfio,也通过如下的方式修改:

echo 1 > /sys/module/vfio/parameters/enable_unsafe_noiommu_mode

关于vfio模块的加载,可以设置为开机自动加载,这样就不用每次手动加载了,具体方式如下:

# 配置 VFIO 内核模块的加载参数
sudo tee /etc/modprobe.d/vfio.conf <<EOF 
options vfio enable_unsafe_noiommu_mode=1
options vfio-pci disable_vga=1
EOF#系统启动时自动加载 vfio 内核模块。
echo "vfio" | sudo tee /etc/modules-load.d/vfio.conf
echo "vfio-pci" | sudo tee -a /etc/modules-load.d/vfio.conf

编译并加载igb_uio驱动

在dpdk22版本中,igb_uio不再被包含在dpdk源代码包中,如果需要则要额外编译安装。具体如下:

#下载
git clone http://dpdk.org/git/dpdk-kmods#编译
cd dpdk-kmods/linux/igb_uio
make#加载
modprobe uio
insmod igb_uio.ko intr_mode=legacy
depmod -a

同样的,igb_uio 也可以实现开机加载:

# 需要将编译出.ko 文件拷贝至如下的目录
cp dpdk-kmods/linux/igb_uioigb_uio.ko /lib/modules/$(uname -r)/kernel/drivers/uio/echo "options igb_uio intr_mode=legacy" | sudo tee /etc/modprobe.d/igb_uio.conf
echo "igb_uio" | sudo tee /etc/modules-load.d/igb_uio.conf

系统配置

配置大页

cd dpdk-stable-22.11.8
python3  ./usertools/dpdk-hugepages.py  -p 2M --setup 1G

绑定网卡到 VFIO 驱动

python3 ./usertools/dpdk-devbind.py --bind=vfio-pci 0000:02:01.0

测试验证

编译并运行 helloworld 示例

有两种编译方式,默认是共享库版本,还有一种静态库版本。

共享库:

cd helloworld
make
./build/helloworld

静态库版本

cd helloworld
make static
./build/helloworld

运行结果:

在这里插入图片描述

出现上述的结果,说明成功了。

总结

本文提供了在 openEuler 22.03 LTS SP1 上构建 DPDK 22.11.8 开发环境的完整指南,包括依赖安装、DPDK 编译、驱动配置和测试验证等步骤。按照本指南操作后,您将获得一个完整的 DPDK 开发环境,可用于后续的 DPDK 应用开发。
如果您咋配置过程中遇到了问题,欢迎评论区交流。谢谢!

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

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

相关文章

微服务网关SpringCloudGateway+SaToken鉴权

目录 概念 前置知识回顾 拿到UserInfo 用于自定义权限和角色的获取逻辑 最后进行要进行 satoken 过滤器全局配置 概念 做权限认证的时候 我们首先要明确两点 我们需要的角色有几种 我们需要的权限有几种 角色 分两种 ADMIN 管理员 &#xff1a;可管理商品 CUSTIOMER 普通…

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中&#xff0c;新增了一个本地验证码接口 /code&#xff0c;使用函数式路由&#xff08;RouterFunction&#xff09;和 Hutool 的 Circle…

Dify中聊天助手、agent、文本生成、chatflow、工作流模式解读分析与对比

一次解读 1. 聊天助手 (Chat Assistant) 情景定位 (Situation): 你需要创建一个可以与用户进行多轮对话的AI应用&#xff0c;例如客服机器人、信息查询助手、或一个特定领域的虚拟专家。目标明确 (Purpose): 核心目标是理解并响应用户的连续提问&#xff0c;维持对话的上下文…

使用Node.js分片上传大文件到阿里云OSS

阿里云OSS的分片上传&#xff08;Multipart Upload&#xff09;是一种针对大文件优化的上传方式&#xff0c;其核心流程和关键特性如下&#xff1a; 1. ‌核心流程‌ 分片上传分为三个步骤&#xff1a; 初始化任务‌&#xff1a;调用InitiateMultipartUpload接口创建上传任务…

C++ if语句完全指南:从基础到工程实践

一、选择结构在程序设计中的核心地位 程序流程控制如同城市交通网络&#xff0c;if语句则是这个网络中的决策枢纽。根据ISO C标准&#xff0c;选择结构占典型项目代码量的32%-47%&#xff0c;其正确使用直接影响程序的&#xff1a; 逻辑正确性 执行效率 可维护性 安全边界 …

【大模型LLM学习】Flash-Attention的学习记录

【大模型LLM学习】Flash-Attention的学习记录 0. 前言1. flash-attention原理简述2. 从softmax到online softmax2.1 safe-softmax2.2 3-pass safe softmax2.3 Online softmax2.4 Flash-attention2.5 Flash-attention tiling 0. 前言 Flash Attention可以节约模型训练和推理时间…

python打卡day46@浙大疏锦行

知识点回顾&#xff1a; 不同CNN层的特征图&#xff1a;不同通道的特征图什么是注意力&#xff1a;注意力家族&#xff0c;类似于动物园&#xff0c;都是不同的模块&#xff0c;好不好试了才知道。通道注意力&#xff1a;模型的定义和插入的位置通道注意力后的特征图和热力图 内…

JavaSec-SPEL - 表达式注入

简介 SPEL(Spring Expression Language)&#xff1a;SPEL是Spring表达式语言&#xff0c;允许在运行时动态查询和操作对象属性、调用方法等&#xff0c;类似于Struts2中的OGNL表达式。当参数未经过滤时&#xff0c;攻击者可以注入恶意的SPEL表达式&#xff0c;从而执行任意代码…

SpringCloud——OpenFeign

概述&#xff1a; OpenFeign是基于Spring的声明式调用的HTTP客户端&#xff0c;大大简化了编写Web服务客户端的过程&#xff0c;用于快速构建http请求调用其他服务模块。同时也是spring cloud默认选择的服务通信工具。 使用方法&#xff1a; RestTemplate手动构建: // 带查询…

【深入学习Linux】System V共享内存

目录 前言 一、共享内存是什么&#xff1f; 共享内存实现原理 共享内存细节理解 二、接口认识 1.shmget函数——申请共享内存 2.ftok函数——生成key值 再次理解ftok和shmget 1&#xff09;key与shmid的区别与联系 2&#xff09;再理解key 3&#xff09;通过指令查看/释放系统中…

探索 Java 垃圾收集:对象存活判定、回收流程与内存策略

个人主页-爱因斯晨 文章专栏-JAVA学习笔记 热门文章-赛博算命 一、引言 在 Java 技术体系里&#xff0c;垃圾收集器&#xff08;Garbage Collection&#xff0c;GC&#xff09;与内存分配策略是自动内存管理的核心支撑。深入探究其原理与机制&#xff0c;对优化程序内存性能…

hbase资源和数据权限控制

hbase适合大数据量下点查 https://zhuanlan.zhihu.com/p/471133280 HBase支持对User、NameSpace和Table进行请求数和流量配额限制&#xff0c;限制频率可以按sec、min、hour、day 对于请求大小限制示例&#xff08;5K/sec,10M/min等&#xff09;&#xff0c;请求大小限制单位如…

大数据-275 Spark MLib - 基础介绍 机器学习算法 集成学习 随机森林 Bagging Boosting

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 大模型篇章已经开始&#xff01; 目前已经更新到了第 22 篇&#xff1a;大语言模型 22 - MCP 自动操作 FigmaCursor 自动设计原型 Java篇开…

Delphi 实现远程连接 Access 数据库的指南

方法一&#xff1a;通过局域网共享 Access 文件&#xff08;简单但有限&#xff09; 步骤 1&#xff1a;共享 Access 数据库 将 .mdb 或 .accdb 文件放在局域网内某台电脑的共享文件夹中。 右键文件夹 → 属性 → 共享 → 启用共享并设置权限&#xff08;需允许网络用户读写&a…

VR视频制作有哪些流程?

VR视频制作流程知识 VR视频制作&#xff0c;作为融合了创意与技术的复杂制作过程&#xff0c;涵盖从初步策划到最终呈现的多个环节。在这个过程中&#xff0c;我们可以结合众趣科技的产品&#xff0c;解析每一环节的实现与优化&#xff0c;揭示背后的奥秘。 VR视频制作有哪些…

文件上传/下载接口开发

接口特性 文件传输接口与传统接口的核心差异体现在数据传输格式&#xff1a; 上传接口采用 multipart/form-data 格式支持二进制文件传输下载接口接收二进制流并实现本地文件存储 文件上传接口开发 接口规范 请求地址&#xff1a;/createbyfile 请求方式&#xff1a;POST…

深入学习RabbitMQ队列的知识

目录 1、AMQP协议 1.1、介绍 1.2、AMQP的特点 1.3、工作流程 1.4、消息模型 1.5、消息结构 1.6、AMQP 的交换器类型 2、RabbitMQ结构介绍 2.1、核心组件 2.2、最大特点 2.3、工作原理 3、消息可靠性保障 3.1、生产端可靠性 1、生产者确认机制 2、持久化消息 3.…

【计算机网络】NAT、代理服务器、内网穿透、内网打洞、局域网中交换机

&#x1f525;个人主页&#x1f525;&#xff1a;孤寂大仙V &#x1f308;收录专栏&#x1f308;&#xff1a;计算机网络 &#x1f339;往期回顾&#x1f339;&#xff1a;【计算机网络】数据链路层——ARP协议 &#x1f516;流水不争&#xff0c;争的是滔滔不息 一、网络地址转…

[论文阅读] 人工智能 | 大语言模型计划生成的新范式:基于过程挖掘的技能学习

#论文阅读# 大语言模型计划生成的新范式&#xff1a;基于过程挖掘的技能学习 论文信息 Skill Learning Using Process Mining for Large Language Model Plan Generation Andrei Cosmin Redis, Mohammadreza Fani Sani, Bahram Zarrin, Andrea Burattin Cite as: arXiv:2410.…

C文件操作2

五、文件的随机读写 这些函数都需要包含头文件 #include<stdio.h> 5.1 fseek 根据文件指针的位置和偏移量来定位文件指针&#xff08;文件内容的光标&#xff09; &#xff08;重新定位流位置指示器&#xff09; int fseek ( FILE * stream, long int offset, int or…