dpdk21.11 编译(meson+ninja)及VFIO模块的加载和运行

news2025/2/11 15:56:43

目录

前言

安装前的环境配置

编译流程

1. 设置环境变量(好像也不需要了)

2. 构建dpdk

3. 编译

执行测试

1. 绑定vfio-pci 模块

2. 挂载网卡

3. 设置大页

4. 启动测试程序-testpmd


前言

操作系统:ubuntu22.04.2 LTS

内核版本:5.19.0-42-generic

dpdk版本:dpdk-stable-21.11.4

安装前的环境配置

sudo apt install libnuma-dev
sudo apt install meson
sudo apt install ninja-build
pyelftools-0.28-py2.py3-none-any.whl    #(这个是从pypi网站下载的,通过 pip install 安装)

# ---- 如果是 ubuntu 20.04.2 ----
# 之前是通过Python-pip 安装
# 从 pypi 网站下载

meson-0.61.3-py3-none-any.whl 
ninja-1.10.2.3-py2.py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl

编译流程

由于dpdk19.11 版本以后取消了 dpdk_setup.sh 的脚本,所以编译命令需要手动执行

1. 设置环境变量(好像也不需要了)

export RTE_SDK=`pwd`
export RTE_TARGET=x86_64-native-linuxapp-gcc

2. 构建dpdk

meson -Dexamples=All build
meson configure -Dexamples=All build -Dprefix=`pwd`/x86_64-native-linuxapp-gcc

# -Dexamples=All 标识编译所有的 examples 目录下的示例,也可以单独的写一个或多个(l2fwd)
# -Dprefix=`pwd`/x86_64-native-linuxapp-gcc 目标目录,注意修改 `pwd` 为当前dpdk所在目录
# -Ddisable_drivers='common/cnxk'  编译时禁用cnxk模块

3. 编译

ninja install -C build

执行测试

1. 绑定vfio-pci 模块

sudo modprobe vfio-pci

2. 挂载网卡

dpdk-devbind.py -s

# 以ens38 0000:02:06.0 为例

sudo ifconfig ens38 down
sudo dpdk-devbind.py -b vfio-pci 0000:02:06.0

# 因为ens38网卡为激活状态,当前挂载在内核驱动上,需要先down掉,然后才能绑定dpdk驱动

 

3. 设置大页

大页可以直接通过修改 grub进行预设,也可以后期直接设置

grub预设的好处是 在系统启动时就直接分配了对应的大页空间,减少系统资源的浪费

大页设置可以通过 dpdk-hugepage.py 脚本进行设置

官网 dpdk-Hugepages 的使用icon-default.png?t=N4P3https://doc.dpdk.org/guides-21.11/tools/hugepages.html?highlight=huge

也可以通过 命令行直接写入数据设置

echo 256 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages

# 其中 256 为大页个数                        

# 如果当前操作系统有多个node,需要每个都设置上(网卡所在node以及要使用的node)

# 大页分为 2048K(2M) 和 1048576kB(1G),当前使用 2M 大页

4. 启动测试程序-testpmd

testpmd 为例 

命令:sudo ./x86_64-native-linuxapp-gcc/bin/dpdk-testpmd -l 1-2 -- -i

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

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

相关文章

深入理解 Java ServiceLoader、Dubbo ExtensionLoader 源码结合实战篇

介绍Java SPIDriver 实现类DriverManager 驱动管理器类loadInitialDrivers 方法registerDriver 方法getConnection 方法 ServiceLoader 核心类LazyIterator#hasNextService 方法LazyIterator#nextService 方法 Dubbo SPI加载策略FilterExtensionLoaderExtensionLoader#getExten…

框架篇面试详解

spring AOP AOP称为面向切面编程,用于将那些与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取并封装成为一个可重用的模块,这个模块被命名为“切面”(Aspect),减少系统中的重复代码&am…

02-舞动数据类型:Golang 类型定义的奇妙之旅

📃个人主页:个人主页 🔥系列专栏:Golang基础 💬Go(又称Golang)是由Google开发的开源编程语言。它结合了静态类型的安全性和动态语言的灵活性,拥有高效的并发编程能力和简洁的语法。G…

chatgpt赋能python:Python如何建设网页并实现客户端与服务器端的通信

Python如何建设网页并实现客户端与服务器端的通信 介绍 Python是一种流行的编程语言,被广泛应用于Web开发。在Web开发中,Python可以用来建立并联接网页与服务器端的通信。 这篇文章将介绍如何使用Python建立网页,并展示如何实现客户端与服…

Science Advance||个体脑中鲁棒的动态脑网络

文章目录 个体化动态方法(INSCAPE 方法):(A)生成脑共同激活状态的组模板:(B)个体水平分析: 不同的大脑状态有特定的协同激活模式(coactivation patterns&…

IntSet

基本概述 IntSet是Redis中set集合的一种实现方式,基于整数数组来实现,并且具备长度可变、有序等特征。 结构如下: typedef struct intset {uint32_t encoding; /* 编码方式,支持存放16位、32位、64位整数(4字节32比特…

chatgpt赋能python:Python如何并排输入数字

Python如何并排输入数字 Python是一个功能强大的编程语言,可以用于各种用途,包括数据分析、机器学习、Web开发等。对于很多初学者来说,学会如何并排输入数字可能是一个基础的技巧。在本文中,我们将介绍如何使用Python在同一行中输…

RK3588平台开发系列讲解(USB篇)USB 常用调试方法

平台内核版本安卓版本RK3588Linux 5.10Android 12文章目录 一、USB枚举成功标志二、USB speed查询三、USB 查询PID、VID四、USB 当前 端口组合五、USB 动态打印debug日志六、USB IPC log分析沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇章主要 介绍 USB 常用调试…

安卓期末考试知识总结(2)

文章目录 第四章:程序活动单元Activity四大组件Activity生命周期Activity的启动模式standardsingleTopsingleInstancesingleTask IntentIntentFilterActivity之间的数据传递putExtra()方法传递数据Bundle类传递数据Activity之间的数据回传 练习总结 第四章&#xff…

Java虚拟机原理

Java是一种跨平台的语言,这意味着Java开发出来的程序经过编译后,可以在Linux上运行,也可以在Windows上运行;可以在PC、服务器上运行,也可以在手机上运行;可以在X86的CPU上运行,也可以在ARM的CPU…

chatgpt赋能python:Python引入Math库的使用方法

Python引入Math库的使用方法 Python作为一门强大的编程语言,有着广泛的应用场景。在计算领域中,Python也有很多优秀的库来进行相应的计算。其中一个广泛使用的库就是Math库。这个库包含了很多数学函数,如三角函数、幂函数、对数函数等等。在…

剑指offer21.调整数组顺序使奇数位于偶数前面

毫无难度。 class Solution {public int[] exchange(int[] nums) {int i 0;int size nums.length;int[] res new int[size];int jsize-1;for(int k 0; k<size;k){if(nums[k]%2 0){res[j]nums[k];j--;}else{res[i]nums[k];i;}}return res;} }

关于 Ceph 存储集群配置的一些笔记

写在前面 Ceph 考试整理笔记&#xff0c;老师总结基础上&#xff0c;略有补充博文内容涉及&#xff1a; ceph 集群的配置简单介绍永久和零时修改集群配置文件集群 Mon 的配置集群身份验证的配置集群多网络的配置 理解不足小伙伴帮忙指正 对每个人而言&#xff0c;真正的职责只有…

Mysql 索引调优

前言 索引是帮助MySQL高效获取数据的数据结构 常用索引 1、普通索引 普通索引是最基本的索引&#xff0c;仅用于加速查询&#xff0c;没有任何限制&#xff1a;可以为空、可以重复 2、唯一索引 唯一索引与普通索引类似&#xff0c;但索引列的值必须唯一 3、主键索引 主…

chatgpt赋能python:Python怎么将界面和程序交互

Python怎么将界面和程序交互 随着互联网技术的不断发展和普及&#xff0c;越来越多的人开始关注于网站的设计和开发。在Web应用程序的开发过程中&#xff0c;与用户进行交互是至关重要的一个方面&#xff0c;而Python作为一种强大的开发语言&#xff0c;可以很好地帮助我们实现…

C++中防止头文件重复包含处理办法

首先给出可以拷贝的模板&#xff1a; #ifndef _ADDNUM_H_ #define _ADDNUM_H_这里加上相应的函数声明即可 #endif在小型项目中&#xff0c;如果将函数的定义写在main函数的后面&#xff0c;那么需要在main函数前面加上这个函数的声明才可以顺利运行成功。 #include <iostr…

python:基础知识—流程控制—函数与模块—数据结构—类与GUI和Turtle—异常处理与文件,概括全书(上万字最详细版)

这里是一张夜景&#xff0c;给大家放松一下。 !&#xff01;无锡南长街 文章目录 模块一&#xff1a;基础知识1、python语言2、常见数字类型3、字符串4、数字类型转换5、标识符命名6、常见关键字7、运算符与表达式&#xff08;1&#xff09;算术运算符&#xff08;2&#xff09…

web自动化框架playwright

参考&#xff1a;新兴爬虫利器 Playwright 的基本用法 | 静觅 (cuiqingcai.com) http://t.csdn.cn/S7260 官方文档&#xff1a;Trace viewer | Playwright 安装 pip3 install playwright playwright install 第一个demo from playwright.sync_api import sync_playwri…

python中的lambda表达式

目录 1.lambda函数的简介 2.为什么要用lambda函数 3.lambda函数的效率 4.lambda函数常用举例 4.1 多参数 4.2 与map函数进行使用 4.3 求两个列表元素的和 5.个人见解 1.lambda函数的简介 lambda函数是一种匿名函数&#xff0c;即没有名字的函数使用lambda保留字定…

Qt(C++)调用libass库完成ASS字幕渲染显示(高级版)

一、项目实现 1.1 实现效果 1.2 开发环境 Qt版本: 5.12.6 编译器: MinGW_32位、MSVC_32位(2017) 操作系统: win10 X64 1.3 实现功能 当前利用Qt+libass库完成了ASS字幕渲染显示,字幕渲染也就是将ASS文件里的当前时间段的字幕信息传递给libass库,渲染之后返回一张图片,在…