当前位置: 首页 > news >正文

DPDK 测试说明

文章目录

  • 2.DPDK 测试说明
    • 2.1硬件pci加密设备绑定到igb_uio驱动
      • IGB_UIO 主要负责什么内容 ?
    • 2.2 test命令使用说明
    • 2.3 dpdk-test-crypto-perf命令使用说明
    • 2.4 使用testpmd测试网卡性能


2.DPDK 测试说明

2.1硬件pci加密设备绑定到igb_uio驱动

dpdk-stable/usertools/dpdk-setup.sh 分析
如何绑定pci设备到igb_uio驱动?(Option:54)

IGB_UIO 主要负责什么内容 ?

(1.1) igb_uio 内核模块功能之一、注册一个 PCI 设备。通过 DPDK 提供的 Python 脚本 dpdk-devbind 来完成, 当执行 dpdk-devbind 来 bind 网卡时,会通过 sysfs 与内核交互、让内核使用指定的驱动程序(e.g. igb_uio) 来绑定网卡。
在 linux 中设备与驱动绑定方法有两种:
a、 配置设备, 让设备选择驱动,向 /sys/bus/pci/devices/{pci id}/driver_override 写入驱动的名称。
b、 配置驱动,让其支持新的 PCI 设备,向 /sys/bus/pci/drivers/igb_uio/new_id 写入要bind的网卡设备的 PCI ID (e.g. 8086 10f5, 格式:设备厂商号 设备号)。
这两种方式都会促使驱动程序 bind 新的网卡设备,而 DPDK 使用的 第二种 方式。
(1.2) igb_uio 内核模块另一个主要功能是、让用户态的 PMD 网卡驱动程序与 UIO 及格线交互:
a、 调用 igbuio_setup_bars,设置 uio_info的 uio_mem 、 uio_port 和其他成员;
b、 调用 uio_register_device, 注册 UIO 设备;
c、打开 UIO 设备并注册中断;
d、调用 uio_event_notify, 将注册的 UIO 设备的 “内存空间” 映射到用户态的应用空间;其 mmap 函数为uio_mmap, 至此、UIO 就可以让 PMD 驱动程序在用户态应用程序访问设备的大部分资源。
e、应用层 UIO 初始化,同时,DPDK 还需要把 PCI 设备的 BAR 以上到应用层; 在 pci_uio_map_resource 函数中、会调用pci_uio_map_resource_by_index 做资源映射。
f、在 PMD 驱动程序中, DPDK 应用程序会调用 rte_eth_rx_burst 读取数据报文; 如果网卡接收 Buffer 的描述符表示已经完成一个报文的接收(如有 E1000_RXD_STAT_DD标志),则 rte_mbuf_raw_alloc 一个 mbuf 进行处理。


以上通过脚本输入PCI设备"bus:slot.func" number本质应该就是一条写命令:
查看usertools/dpdk-devbind.py脚本内容,确实如此
在这里插入图片描述
DPDK中我们基于脚本输入”bus:slot.func” number绑定设备即可。
实际上绑定设备通过”Vendor DeviceID” number,但是取消绑定设备通过”bus:slot.func” number

补充思考:通过脚本基于pci 总线绑定我们的半高卡到igb_uio驱动中,脚本它凭什么认为这个pci设备就是”加密设备”?而不是”网络设备”、不是”压缩设备”?
在这里插入图片描述
答:
①通过dpdk-devbind.py --status查看当前有哪些加密设备
在这里插入图片描述
②dpdk-devbind.py脚本中内容如下,根据Class number决定这是一个什么设备
在这里插入图片描述
③为什么是0x10代表加密设备?因为这是PCIe规范定义的
https://blog.ladsai.com/pci-configuration-space-class-code.html
④查看我们的PCIe配置空间,class code配置设置成了0x10,所以被DPDK视为这是一个加密设备。
在这里插入图片描述

2.2 test命令使用说明

est是用于测试dpdk rte相关的基础功能,例如mempool_perf_autotest
指定测试要用到的logic core:0-7

$ ./test -l 0-7

进入RTE>>命令行后,输入’Shift + ?’ 可以查看当前支持哪些测试

在这里插入图片描述

2.3 dpdk-test-crypto-perf命令使用说明

dpdk-test-crypto-perf是专门用来测试硬件加密设备功能和性能的。
命令用法说明:dpdk-test-crypto-perf [EAL Options] -- [Application Options]
注:EAL选项跟App选项通过–隔开:
1)EAL选项:
①指定要运行DPDK的CPU(可以通过两个选项: -l / -c):
-c
-l
COREMASK的格式是:要运行的十六进制内核位掩码,例如 -c 0x101就是指定CPU0跟CPU8运行DPDK
CORELIST的格式是:要运行的核心列表,例如-l 0-4 就是指定CPU0到CPU4运行DPDK

②指定虚拟设备:例如:–vdev crypto_ccp907t_sec
–vdev

③添加一个PCI设备到白名单中: 例如:-w 0000:01:00.0(这是非必须选项)
-w

2)App选项:
①指定测试类型(type有三种可选类型: throughput / latency / verify):
–ptest type
②设置操作的总次数
–total-ops
③设置单个(明文或密文)报文的大小
–buffer-sz
④设置每个报文的报文段数(用于测试scatter/gather)
–segments-nb
⑤设置设备类型: 例如: --devtype crypto_ccp907t_sec
–devtype
⑥设置操作类型(name有这几种可选类型: cipher-only / auth-only / cipher-then-auth / auth-then-cipher / aead):
–optype
⑦配置密码算法:
a).设置密码算法名称:例如 --cipher-algo sm4-cbc
–cipher-algo
b).设置密码操作模式(mode有两种可选类型: encrypt / decrypt):
–cipher-op
c).设置密码 key的大小
–cipher-key-sz
d).设置密码 iv的大小
–cipher-iv-sz
⑧配置认证算法:
a).设置认证算法名称:例如 --auth-algo sm3-hmac
–auth-algo
b).设置认证操作模式(mode有两种可选类型: verify / generate):
–auth-op
c).设置认证key的大小
–auth-digest-sz
d).配置认证aad的大小(暂时不清楚干啥用的)
–auth-aad-sz
⑨设置测试标志值向量文件路径,用于验证算法的正确性。(参见测试向量文件一章,该参数需要与 --ptest verify 一起使用):
–test-file
例如: --test-file /home/ccore/dpdk-stable/sm4_cbc_sm3.data

a).在测试向量文件中设置特定的测试名称部分(用于hash认证结果比对测试):
–test-name
例如:–test-name sm3_hmac_buff_32

2.4 使用testpmd测试网卡性能

参考链接:
https://www.jianshu.com/p/a7c7d5e80a14
下面testpmd测试时,关于更多参数含义就不一一说明了,请自行查看
https://dpdk.readthedocs.io/en/stable/testpmd_app_ug/index.html

由于网卡是由DPDK接管的,是没有IP地址的,所以是以MAC地址通信。确定好各自的源MAC和目的MAC,类似于二层交换机的功能

1)物理连接方式:
这里测试用的是enp3s0和p2p1两个网口(网卡芯片都是I210),这两个网口都通过PCIe接口插在Intel 5218R塔式工作站上,然后这两个网口外部通过网线直接连接
enp3s0 <----------- 网线 -----------> p2p1

2)网卡取消绑定内核驱动:要先down掉,之后才能绑定到DPDK中(注意: 使用的物理网卡要能够支持igb驱动,否则在DPDK中通过igb_uio绑定无效)
补充:查看当前DPDK版本支持哪些网卡
http://doc.dpdk.org/guides/rel_notes/release_18_11.html
$ sudo ifconfig enp3s0 down
$ sudo ifconfig p2p1 down
在这里插入图片描述
3)导出环境: 编译dpdk-stable代码以及dpdk-stable/examples下面的测试例程都要先导出下面两个环境变量(可以放在~/.bashrc下,使其自动导出):
$ export RTE_SDK= #DPDKInstallDir = /home/zf/git/dpdk-stable
$ export RTE_TARGET=x86_64-native-linuxapp-gcc

4)编译DPDK与加载uio驱动(大页内存默认上电已经配置好,通过bootargs传参预配置了)
先进入dpdk_stable顶层目录,然后依次执行以下指令:
$ sudo make install T=x86_64-native-linuxapp-gcc
$ sudo modprobe uio
$ sudo insmod x86_64-native-linuxapp-gcc/kmod/igb_uio.ko

5)网卡绑定到DPDK(基于PCIe BDF num绑定):
$ sudo ./usertools/dpdk-devbind.py -b igb_uio 03:00.0 b3:00.0
在这里插入图片描述
6)通过dpdk-stable/examples/ethtool检测有多少个网口绑定到了DPDK(这一步实际上可以跳过,目的是为了通过不同的工具查询DPDK绑定网卡数量)

相关文章:

DPDK 测试说明

文章目录 2.DPDK 测试说明2.1硬件pci加密设备绑定到igb_uio驱动IGB_UIO 主要负责什么内容 &#xff1f; 2.2 test命令使用说明2.3 dpdk-test-crypto-perf命令使用说明2.4 使用testpmd测试网卡性能 2.DPDK 测试说明 2.1硬件pci加密设备绑定到igb_uio驱动 dpdk-stable/usertool…...

上传及接收pdf文件,使用pdfbox读取pdf文件内容

前端上传pdf文件 html <form class"layui-form"><div style"background-color: #ffffff" ><div style"padding: 30px"><div class"layui-form-item"><div class"layui-inline"><label c…...

第一个搭建SpringBoot项目(连接mysql)

首先新建项目找到Spring Initializr 我使用的URL是https://start.spring.io这里最低的JDK版本是17&#xff0c;而且当网速不好的时候可能会显示超时&#xff0c;这里可以选用阿里云的镜像https://start.aliyun.com可以更快一些但是里面还是有一些区别的 我们这里选择Java语言&a…...

docker部署rabbitMQ 单机版

获取rabbit镜像&#xff1a;我们选择带有“mangement”的版本&#xff08;包含web管理页面&#xff09;&#xff1b; docker pull rabbitmq:management 创建并运行容器&#xff1a; docker run -d --name rabbitmq -p 5677:5672 -p 15677:15672 rabbitmq:management --name:…...

PDF 全文多语言 AI 摘要 API 数据接口

PDF 全文多语言 AI 摘要 API 数据接口 PDF / 文本摘要 AI 生成 PDF 文档摘要 AI 处理 / 智能摘要。 1. 产品功能 支持多语言摘要生成&#xff1b;支持 formdata 格式 PDF 文件流传参&#xff1b;快速处理大文件&#xff1b;基于 AI 模型&#xff0c;持续迭代优化&#xff1b;…...

《信息系统安全》课程实验指导

第1关&#xff1a;实验一&#xff1a;古典密码算法---代换技术 任务描述 本关任务&#xff1a;了解古典密码体制技术中的代换技术&#xff0c;并编程实现代换密码的加解密功能。 注意所有明文字符为26个小写字母&#xff0c;也就是说字母表为26个小写字母。 相关知识 为了完…...

Accelerated Soft Error Testing 介绍

加速软错误测试(Accelerated Soft Error Testing, ASET)是一种评估半导体器件或集成电路(ICs)在高辐射环境中发生软错误率(Soft Error Rate, SER)的方法。这种测试方法通过模拟或加速软错误的发生,以便在较短时间内评估器件的可靠性。软错误指的是那些不会对硬件本身造成…...

Redis缓存常用的读写策略

缓存常用的读写策略 缓存与DB的数据不一致问题&#xff0c;大多数都是指DB的数据已经修改&#xff0c;而缓存中的数据还是旧数据的情况。 旁路缓存模式 对于读操作&#xff1a;基本上所有模式都是先尝试从缓存中读&#xff0c;没有的话再去DB读取&#xff0c;然后写到缓存中…...

9月产品更新 | 超10项功能升级,快来看看你的需求上线了吗?

Smartbi用户可以在官网&#xff08;PC端下载&#xff09;&#xff0c;更新后便可以使用相关功能&#xff0c;也可以在官网体验中心体验相关功能。 接下来&#xff0c;我们一起来看看都有哪些亮点功能更新吧。 ▎插件商城 Smartbi麦粉社区的应用市场新增了“插件”模块&#xf…...

ARP协议工作原理析解 (详细抓包分析过程)

目录 1. ARP 协议 2. 工作原理 3. ARP 协议报文格式 4. ARP 缓存的查看和修改 5. tcpdump 抓包分析 ARP 协议工作原理 5.1 搭建 2 台虚拟机 5.2 在主机 192.168.0.155 打开一个shell命令行开启抓包监听 5.3 在主机 192.168.0.155 打开另一个shell命令行 telnet 192.168.…...

axure动态面板

最近转管理岗了&#xff0c;作为项目负责人&#xff0c;需要常常与客户交流沟通&#xff0c;这时候画原型的能力就是不可或缺的本领之一了&#xff0c;关于axure可能很多it行业者都不是很陌生&#xff0c;简单的功能呢大家就自行去摸索&#xff0c;我们这次从动态面板开始讲起。…...

[论文笔记]Making Large Language Models A Better Foundation For Dense Retrieval

引言 今天带来北京智源研究院(BAAI)团队带来的一篇关于如何微调LLM变成密集检索器的论文笔记——Making Large Language Models A Better Foundation For Dense Retrieval。 为了简单&#xff0c;下文中以翻译的口吻记录&#xff0c;比如替换"作者"为"我们&quo…...

Linux平台屏幕|摄像头采集并实现RTMP推送两种技术方案探究

技术背景 随着国产化操作系统的推进&#xff0c;市场对国产化操作系统下的生态构建&#xff0c;需求越来越迫切&#xff0c;特别是音视频这块&#xff0c;今天我们讨论的是如何在linux平台实现屏幕|摄像头采集&#xff0c;并推送至RTMP服务。 我们知道&#xff0c;Linux平台&…...

梧桐数据库|中秋节活动·抽奖领取大闸蟹

有话说 众所周不知&#xff0c;我的工作就是做一个国产的数据库产品—中国移动梧桐数据库&#xff08;简称WuTongDB&#xff09;。 近期我们举办了一次小活动&#xff0c;来提升梧桐数据库的搜索量和知名度&#xff0c;欢迎大家来参加&#xff0c;免费抽奖领取大闸蟹哦~~~ 具…...

Python怎么发送邮件:基础步骤与详细教程?

Python怎么发送邮件带附件&#xff1f;怎么使用Python发送邮件&#xff1f; 无论是工作中的通知、报告&#xff0c;还是生活中的问候、邀请&#xff0c;电子邮件都扮演着不可或缺的角色。那么&#xff0c;Python怎么发送邮件呢&#xff1f;AokSend将详细介绍Python发送邮件的基…...

[译] 大模型推理的极限:理论分析、数学建模与 CPU/GPU 实测(2024)

译者序 本文翻译自 2024 年的一篇文章&#xff1a; LLM inference speed of light&#xff0c; 分析了大模型推理的速度瓶颈及量化评估方式&#xff0c;并给出了一些实测数据&#xff08;我们在国产模型上的实测结果也大体吻合&#xff09;&#xff0c; 对理解大模型推理内部工…...

vue3 响应式 API:readonly() 与 shallowReadonly()

readonly() readonly()是一个用于创建只读代理对象的函数。它接受一个对象 (不论是响应式还是普通的) 或是一个 ref&#xff0c;返回一个原值的只读代理。 类型 function readonly<T extends object>(target: T ): DeepReadonly<UnwrapNestedRefs<T>>以下…...

迁移学习与知识蒸馏对比

应用场景不同 迁移学习&#xff1a;通常用于不同但相关的任务之间的知识迁移。特别是当目标任务的数据量不足时&#xff0c;可以从一个已经在大规模数据上训练好的模型中获取有用的特征或参数。典型场景包括计算机视觉任务&#xff0c;比如你在ImageNet上训练了一个ResNet&…...

【Java-反射】

什么是反射&#xff1f; JAVA反射机制是在运行状态中&#xff0c;创建任意一个类&#xff0c;能获取这个类的所有属性和方法&#xff1b;对于任意一个对象&#xff0c;都能够调用它的任意一个方法和属性&#xff1b;这种动态获取的信息以及动态调用对象的方法的功能称为java语言…...

移动UI设计要求越来越高,最为设计师应如何迎头赶上

一、引言 在当今数字化高速发展的时代&#xff0c;移动设备已经成为人们生活中不可或缺的一部分。随着科技的不断进步和用户需求的日益增长&#xff0c;移动 UI 设计的要求也越来越高。作为移动 UI 设计师&#xff0c;我们面临着巨大的挑战&#xff0c;需要不断提升自己的能力…...

大数据-121 - Flink Time Watermark 详解 附带示例详解

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…...

国行 iPhone 15 Pro 开启苹果 Apple Intelligence 教程

一、前言苹果在 iOS 18.1 测试版上正式开启了 Apple Intelligence 的内测&#xff0c;但国行设备因政策原因不支持&#xff0c;且国行设备在硬件上被锁定。不过&#xff0c;我们可以通过一些方法来破解国行 iPhone 15 Pro&#xff0c;使其能够开启 Apple Intelligence。 以下是…...

conda、anaconda、pip、torch、pytorch、tensorflow到底是什么东西?(转载自本人的知乎回答)

转载自本人的知乎回答&#xff08;截止2024年9月&#xff0c;1700赞同&#xff0c;2400收藏&#xff09; https://www.zhihu.com/question/566592612/answer/3063465880 如果你是一个大四的CS准研究生回去补基础课&#xff0c;假如是科班CS甚至科班EE的话那你基础也太差了。你…...

数据库系列之GaussDB数据库中逻辑对象关系简析

初次接触openGauss或GaussDB数据库的逻辑对象&#xff0c;被其中的表空间、数据库、schema和用户之间的关系&#xff0c;以及授权管理困惑住了&#xff0c;与熟悉的MySQL数据库的逻辑对象又有明显的不同。本文旨在简要梳理下GaussDB数据库逻辑对象之间的关系&#xff0c;以加深…...

如何进行不同数据库的集群操作?--从部署谈起,今天来看MySQL和NoSql数据库Redis的集群

篇幅较长&#xff0c;主要分为mysql和Redis两部分。找想要的部分可见目录食用。。 目录 什么是集群&#xff1f;为什么要集群&#xff1f; 1.1 数据库主要分为两大类&#xff1a;关系型数据库与 NoSQL 数据库 1.2 为什么还要用 NoSQL 数据库呢&#xff1f; ----------------…...

第 6 章图像聚类

本章将介绍几种聚类方法&#xff0c;并展示如何利用它们对图像进行聚类&#xff0c;从而寻找相似的图像组。聚类可以用于识别、划分图像数据集&#xff0c;组织与导航。此外&#xff0c;我们还会对聚类后的图像进行相似性可视化。 6.1 K-means聚类 K-means 是一种将输入数据划…...

HC-SR501人体红外传感器详解(STM32)

目录 一、介绍 二、传感器原理 1.原理图 2.引脚描述 3.工作原理介绍 三、程序设计 main.c文件 body_hw.h文件 body_hw.c文件 四、实验效果 五、资料获取 项目分享 一、介绍 HC-SR501人体红外模块是基于红外线技术的自动控制模块&#xff0c;采用德国原装进口LHI77…...

关于武汉芯景科技有限公司的IIC电平转换芯片XJ9517开发指南(兼容PCF9517)

一、芯片引脚介绍 1.芯片引脚 2.引脚描述 二、系统结构图 三、功能描述 1.电平转换 2.芯片使能/失能 EN 引脚为高电平有效&#xff0c;内部上拉至 VCC&#xff08;B&#xff09;&#xff0c;允许用户选择中继器何时有效。这可用于在上电时隔离行为不良的从机&#xff0c;直到…...

C语言:scanf()、getchar()、gets()

一、gets() gets()能吸收空格和换行&#xff0c;因此输入后&#xff0c;对输出要去除空格 和换行\n; #include <stdio.h> #include <string.h> int main() {char str[1000];int count0;gets(str);for(int i0;i<strlen(str);i)count;printf("%s\n",str…...

基于MATLAB的全景图像拼接系统实现

简要的论文框架和技术思路 摘要 本文深入探讨了基于MATLAB平台的块匹配全景图像拼接系统的设计与实现。通过详细解析SIFT/SURF特征提取、RANSAC变换估计、APAP局部对齐、图割算法拼接缝选择及multi-band blending图像融合等关键技术&#xff0c;构建了高效且高质量的全景图像…...