当前位置: 首页 > 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;需要不断提升自己的能力…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

Cursor实现用excel数据填充word模版的方法

cursor主页&#xff1a;https://www.cursor.com/ 任务目标&#xff1a;把excel格式的数据里的单元格&#xff0c;按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例&#xff0c;…...

【Java_EE】Spring MVC

目录 Spring Web MVC ​编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 ​编辑参数重命名 RequestParam ​编辑​编辑传递集合 RequestParam 传递JSON数据 ​编辑RequestBody ​…...

EtherNet/IP转DeviceNet协议网关详解

一&#xff0c;设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络&#xff0c;本网关连接到EtherNet/IP总线中做为从站使用&#xff0c;连接到DeviceNet总线中做为从站使用。 在自动…...

以光量子为例,详解量子获取方式

光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学&#xff08;silicon photonics&#xff09;的光波导&#xff08;optical waveguide&#xff09;芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中&#xff0c;光既是波又是粒子。光子本…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

LRU 缓存机制详解与实现(Java版) + 力扣解决

&#x1f4cc; LRU 缓存机制详解与实现&#xff08;Java版&#xff09; 一、&#x1f4d6; 问题背景 在日常开发中&#xff0c;我们经常会使用 缓存&#xff08;Cache&#xff09; 来提升性能。但由于内存有限&#xff0c;缓存不可能无限增长&#xff0c;于是需要策略决定&am…...

手机平板能效生态设计指令EU 2023/1670标准解读

手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读&#xff0c;综合法规核心要求、最新修正及企业合规要点&#xff1a; 一、法规背景与目标 生效与强制时间 发布于2023年8月31日&#xff08;OJ公报&…...

【堆垛策略】设计方法

堆垛策略的设计是积木堆叠系统的核心&#xff0c;直接影响堆叠的稳定性、效率和容错能力。以下是分层次的堆垛策略设计方法&#xff0c;涵盖基础规则、优化算法和容错机制&#xff1a; 1. 基础堆垛规则 (1) 物理稳定性优先 重心原则&#xff1a; 大尺寸/重量积木在下&#xf…...

React从基础入门到高级实战:React 实战项目 - 项目五:微前端与模块化架构

React 实战项目&#xff1a;微前端与模块化架构 欢迎来到 React 开发教程专栏 的第 30 篇&#xff01;在前 29 篇文章中&#xff0c;我们从 React 的基础概念逐步深入到高级技巧&#xff0c;涵盖了组件设计、状态管理、路由配置、性能优化和企业级应用等核心内容。这一次&…...