Ubuntu系统下DPDK环境搭建

news/发布时间2024/9/20 7:49:40

目录

  • 一.虚拟机配置
    • 1.添加一个网卡(桥接模式)
    • 2.修改网卡类型
    • 3.修改网卡名称
    • 4.重启虚拟机
    • 5.查看网卡信息
    • 6.dpdk配置内存巨型页
  • 三 DPDK源代码下载和编译
    • 1.下载源代码
    • 2.解压源代码
    • 3.安装编译环境
    • 4.编译
    • 5.设置dpdk的环境变量
    • 6.禁止多队列网卡
    • 7.加载igb_uio模块
    • 8.网卡绑定
    • 9.验证测试案例
    • 10.运行第一个DPDK程序

一.虚拟机配置

1.添加一个网卡(桥接模式)

在这里插入图片描述

2.修改网卡类型

在虚拟机本地文件存储路径下,打开文件名后缀为 .vmx 的文件,修改以下参数:

ethernet1.virtualDev = "e1000"

修改为:

ethernet1.virtualDev = "vmxnet3"

注意:修改时须在虚拟机关机状态下修改

3.修改网卡名称

通过命令sudo vim /etc/netplan/00-installer-config.yaml可以看到如下:
在这里插入图片描述
将其修改为:
在这里插入图片描述
其次,通过命令sudo vim /etc/default/grub 将参数GRUB_CMDLINE_LINUX="" 修改为:GRUB_CMDLINE_LINUX="find_preseed=/preseed.cfg auto noprompt priority=critical locale=en_US net.ifnames=0 biosdevname=0"

再执行命令sudo grub-mkconfig -o /boot/grub/grub.cfg

4.重启虚拟机

5.查看网卡信息

ifconfig

在这里插入图片描述
查看是否有多队列网卡:cat /proc/interrupts | grep eth
在这里插入图片描述
通过图片展示信息可以看到此时为一个普通网卡eth1和一个多队列网卡eth0

6.dpdk配置内存巨型页

Ubuntu20.04支持内存巨型页,但是还是要我们修改启动参数,设置巨型页大小和数量,设置方法是修改linux启动参数,我们需要修改**/etc/default/grub文件的GRUB_CMDLINE_LINUX参数,添加default_hugepages=1G hugepagesz=2M hugepages=1024**
sudo vim /etc/default/grub

GRUB_CMDLINE_LINUX="find_preseed=/preseed.cfg auto noprompt priority=critical locale=en_US net.ifnames=0 biosdevname=0 default_hugepages=1G hugepagesz=2M hugepages=1024"

再执行命令:sudo grub-mkconfig -o /boot/grub/grub.cfg

三 DPDK源代码下载和编译

1.下载源代码

官方地址:Download
由于DPDK各版本之间差异较大,编译过程以实际情况为准,此处演示版本为 DPDK 19.08.2
在这里插入图片描述

2.解压源代码

将下载的DPDK压缩包放置到合适的目录中,此处我的路径为:/home/zloser/share/ 通过命令:tar -xJf dpdk-19.08.2.tar.xz 解压后得到/home/zloser/share/dpdk-stable-19.08.2的源代码dpdk-stable-19.08.2

3.安装编译环境

sudo apt-get install libnuma-dev

4.编译

注意:编译需要在root权限下

cd dpdk-stable-19.08.2/

执行脚本命令:./usertools/dpdk-setup.sh
在这里插入图片描述
选择:39 回车

Option:39

在这里插入图片描述
编译成功后输入:60 退出,在该目录下会存在一个新的文件夹:x86_64-native-linux-gcc
在这里插入图片描述

5.设置dpdk的环境变量

执行命令:
export RTE_SDK=/home/zloser/share/dpdk-stable-19.08.2(修改为自己的路径)
export RTE_TARGET=x86_64-native-linux-gcc
在这里插入图片描述

6.禁止多队列网卡

通过上述操作可以知道多队列网卡为:eth0
通过命令使其禁止:sudo ifconfig eth0 down
在这里插入图片描述

7.加载igb_uio模块

执行脚本命令:./usertools/dpdk-setup.sh
Option:43
在这里插入图片描述

8.网卡绑定

igb_uio模块加载成功后,我们选择49绑定igb_uio模块到eth0,输入PCI地址:0000:03:00:0,将网卡绑定到igb_uio模块.
Option:49
在这里插入图片描述
绑定成功后如下图所示,否则绑定失败,需重新绑定.
在这里插入图片描述

9.验证测试案例

Option:53
根据自己虚拟机的核心数选择bitmask值,否则测试出错.
bitmask:7(此处虚拟机核心数为8)
在这里插入图片描述
在这里插入图片描述

输入指令 show port info 0 查看接口信息
在这里插入图片描述
输入:quit退出

10.运行第一个DPDK程序

dpdk的源代码中有很多例子程序,都放在example目录中,其中有个最简单的程序helloworld,进入example/helloworld中,直接make,可以编译出helloworld程序。最后我们使用root权限执行
make
sudo ./build/helloworld
在这里插入图片描述
环境配置成功!!!

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

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

相关文章

数据分类分级场景建设思路

数据分类分级是数据安全治理实践过程中的关键场景,是数据安全工作的桥头堡和必选题。本指南结合行业实践,提出如下图 所示的七步走建设思路,可供刚开展数据分类分级工作的组织参考。 来源:中国信息通信研究院 数据分类分级“七步…

PyTorch概述(七)---Optim

torch.optim是一个实现多种优化算法的包;很多常用的方法已经被支持;接口丰富;容易整合更为复杂的算法; 如何使用一个优化器 为了使用torch.optim包功能;用户必须构建一个优化器对象;该优化器将保持当前的参数状态且基于计算的梯度更新参数; 构建优化器 要构建一个优化器;必…

SD-WAN技术:优化国内外服务器访问的关键

在全球化的商业环境中,企业经常需要在国内访问国外的服务器。然而,由于地理位置和网络架构的限制,这种跨国访问往往会遇到速度慢、延迟高等问题。SD-WAN(软件定义广域网)技术的兴起,为企业提供了一种新的解…

【MATLAB源码-第148期】基于matlab的BP神经网络2/4ASK,2/4FSK,2/4PSK信号识别仿真。

操作环境: MATLAB 2022a 1、算法描述 1. 调制技术基础 调制技术是通信技术中的基础,它允许数据通过无线电波或其他形式的信号进行传输。调制可以根据信号的振幅、频率或相位的变化来进行,分别对应于ASK、FSK和PSK。 1.1 2ASK与4ASK 振幅…

技术派数据库表自动初始化(学习)

不需要在db中手动创建或者导入相关的schema、data&#xff0c;项目启动自动创建对应的表&#xff0c;并初始化。实现该过程。 Liquibase数据库版本管理 依赖配置 在paicoding-web模块中&#xff0c;pom.xml 文件中添加 <dependency><groupId>org.liquibase</g…

音视频数字化(数字与模拟-电视)

上一篇文章【音视频数字化(数字与模拟-音频广播)】谈了音频的广播,这次我们聊电视系统,这是音频+视频的采集、传输、接收系统,相对比较复杂。 音频系统的广播是将声音转为电信号,再调制后发射出去,利用“共振”原理,收音机接收后解调,将音频信号还原再推动扬声器,我…

力扣链表篇

以下刷题思路来自代码随想录以及官方题解 文章目录 203.移除链表元素707.设计链表206.反转链表24.两两交换链表中的节点19.删除链表的倒数第N个节点面试题 02.07. 链表相交142.环形链表II 203.移除链表元素 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链…

wcf 简单实践 数据绑定 数据更新ui

1.概要 2.代码 2.1 xaml <Window x:Class"WpfApp3.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d"http://schemas.microsoft.com/expr…

基于x86架构的OpenHarmony应用生态挑战赛等你来战!

为了更快速推进OpenHarmony在PC领域的进一步落地&#xff0c;加快x86架构下基于OpenHarmony的应用生态的繁荣&#xff0c;为北向应用开发者提供一个更加便捷的开发环境&#xff0c;推动OpenHarmony北向应用开发者的增加&#xff0c;助力OpenHarmony在PC领域实现新的突破&#x…

Linux系统Docker部署Nexus Maven并实现远程访问本地管理界面

文章目录 1. Docker安装Nexus2. 本地访问Nexus3. Linux安装Cpolar4. 配置Nexus界面公网地址5. 远程访问 Nexus界面6. 固定Nexus公网地址7. 固定地址访问Nexus Nexus是一个仓库管理工具&#xff0c;用于管理和组织软件构建过程中的依赖项和构件。它与Maven密切相关&#xff0c;可…

Sui在AIBC Eurasia奖项评选中被评为2024年度最佳区块链解决方案

自2023年主网上线以来&#xff0c;经历了爆炸性增长的Layer1区块链Sui在2月25–27日迪拜举办的第二届AIBC Eurasia活动中获得“2024最佳区块链解决方案奖”&#xff08;Best Real World Application Award 2024&#xff09;。这个盛大的活动以世界级的参与者和往届获奖者而闻名…

一篇关于,搬运机器人的介绍

搬运机器人是一种能够自动运输和搬运物品的机器人。它们通常配备有传感器和导航系统&#xff0c;可以在工厂、仓库、医院或其他场所自主移动&#xff0c;并且可以根据预先设定的路径或指令进行操作。 搬运机器人可以用于搬运重物、物料搬运、装卸货物、仓库管理等任务。它们可以…

Python程序的流程

归纳编程学习的感悟&#xff0c; 记录奋斗路上的点滴&#xff0c; 希望能帮到一样刻苦的你&#xff01; 如有不足欢迎指正&#xff01; 共同学习交流&#xff01; &#x1f30e;欢迎各位→点赞 &#x1f44d; 收藏⭐ 留言​&#x1f4dd; 年轻是我们唯一拥有权利去编制梦想的时…

springboot227旅游管理系统

springboot旅游管理系统设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本旅游管理系统就是在这样的大环境下诞生&#xff0c;其可以帮助使用者在…

《大模型时代-ChatGPT开启通用人工智能浪潮》精华摘抄

原书很长&#xff0c;有19.3w字&#xff0c;本文尝试浓缩一下其中的精华。 知识点 GPT相关 谷歌发布LaMDA、BERT和PaLM-E&#xff0c;PaLM 2 Facebook的母公司Meta推出LLaMA&#xff0c;并在博客上免费公开LLM&#xff1a;OPT-175B。 在GPT中&#xff0c;P代表经过预训练(…

如何运行github上的项目

为了讲明白这个过程&#xff0c;特意做了一个相对来说比较好读懂的原理图&#xff0c;希望和我一样初学的小伙伴也能很快上手哈&#x1f60a; 在Github中找到想要部署的项目&#xff0c;这里以BartoszJarocki/CV&#xff08;线上简历&#x1f4c4;&#xff09;项目为例 先从头…

前端视角对Rust的浅析

概述 本文将从 Rust 的历史&#xff0c;前端的使用场景和业界使用案例一步步带你走进 Rust的世界。并且通过一些简单的例子&#xff0c;了解 Rust 如何应用到前端&#xff0c;提高前端的生产效率。 Rust简史 2006年&#xff0c;软件开发者Graydon Hoare在Mozilla工作期间&#…

C#与VisionPro联合开发——INI存储和CSV存储

1、INI存储 INI 文件是一种简单的文本文件格式&#xff0c;通常用于在 Windows 环境中存储配置数据。INI 文件格式由一系列节&#xff08;section&#xff09;和键值对&#xff08;key-value pairs&#xff09;组成&#xff0c;用于表示应用程序的配置信息。一个典型的 INI 文…

Flink代码单词统计 ---批处理

flatMap&#xff1a;一对多转换操作&#xff0c;输入句子&#xff0c;输出分词后的每个词groupBy&#xff1a;按Key分组&#xff0c;0代表选择第1列作为Keysum&#xff1a;求和&#xff0c;1代表按照第2列进行累加print&#xff1a;打印最终结果 1.WordCount代码编写 需求&am…

k8s资源管理之声明式管理方式

1 声明式管理方式 1.1 声明式管理方式支持的格式 JSON 格式&#xff1a;主要用于 api 接口之间消息的传递 YAML 格式&#xff1a;用于配置和管理&#xff0c;YAML 是一种简洁的非标记性语言&#xff0c;内容格式人性化&#xff0c;较易读 1.2 YAML 语法格式&#xff1a; ●…
推荐文章