Ubuntu系统下DPDK环境搭建

2024-03-01 23:28
文章标签 系统 ubuntu 搭建 环境 dpdk

本文主要是介绍Ubuntu系统下DPDK环境搭建,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • 一.虚拟机配置
    • 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
在这里插入图片描述
环境配置成功!!!

这篇关于Ubuntu系统下DPDK环境搭建的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/764183

相关文章

IntelliJ IDEA 中配置 Spring MVC 环境的详细步骤及问题解决

《IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决》:本文主要介绍IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决,本文分步骤结合实例给大... 目录步骤 1:创建 Maven Web 项目步骤 2:添加 Spring MVC 依赖1、保存后执行2、将新的依赖

Python如何自动生成环境依赖包requirements

《Python如何自动生成环境依赖包requirements》:本文主要介绍Python如何自动生成环境依赖包requirements问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录生成当前 python 环境 安装的所有依赖包1、命令2、常见问题只生成当前 项目 的所有依赖包1、

Redis在windows环境下如何启动

《Redis在windows环境下如何启动》:本文主要介绍Redis在windows环境下如何启动的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Redis在Windows环境下启动1.在redis的安装目录下2.输入·redis-server.exe

Pytest多环境切换的常见方法介绍

《Pytest多环境切换的常见方法介绍》Pytest作为自动化测试的主力框架,如何实现本地、测试、预发、生产环境的灵活切换,本文总结了通过pytest框架实现自由环境切换的几种方法,大家可以根据需要进... 目录1.pytest-base-url2.hooks函数3.yml和fixture结论你是否也遇到过

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

浅谈配置MMCV环境,解决报错,版本不匹配问题

《浅谈配置MMCV环境,解决报错,版本不匹配问题》:本文主要介绍浅谈配置MMCV环境,解决报错,版本不匹配问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录配置MMCV环境,解决报错,版本不匹配错误示例正确示例总结配置MMCV环境,解决报错,版本不匹配在col

Ubuntu中远程连接Mysql数据库的详细图文教程

《Ubuntu中远程连接Mysql数据库的详细图文教程》Ubuntu是一个以桌面应用为主的Linux发行版操作系统,这篇文章主要为大家详细介绍了Ubuntu中远程连接Mysql数据库的详细图文教程,有... 目录1、版本2、检查有没有mysql2.1 查询是否安装了Mysql包2.2 查看Mysql版本2.

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1