RDMA性能测试工具集preftest_README
文章目录
- 1 概述
- 2 安装
- 3 测试方法说明
- 4 测试说明
- 5 运行测试
- 所有测试的通用选项
- 延迟测试选项
- 带宽测试选项
- ib_send_lat(发送延迟测试)和 ib_send_bw(发送带宽测试)的选项
- ib_atomic_lat(原子延迟测试)和 ib_atomic_bw(原子带宽测试)的选项
- 原始以太网发送带宽测试的选项
测试工具: https://github.com/linux-rdma/perftest
1 概述
preftest(Performance Test)是一组基于uverbs编写的测试工具集,旨在用作性能微基准。这些测试可以用作硬件或软件调优以及功能测试。
uverbs是RDMA(Remote Direct Memory Access)的一种编程接口,它提供了底层、高效的编程接口,可以控制RDMA网络适配器中的硬件资源、创建和管理RDMA操作队列等功能,同时verbs接口也提供了一些原子操作、随机访问、远程直接内存访问等工具,从而实现了高效的、无锁的、直接内存访问 。
该测试工具集包含了带宽和延迟基准测试,例如:
- Send----
ib_send_bw
和ib_send_lat
- RDMA Read----
ib_read_bw
和ib_read_lat
- RDMA Write----
ib_write_bw
和ib_write_lat
- RDMA Atomic----
ib_atomic_bw
和ib_atomic_lat
- Native Ethernet (when working with MOFED2)----
raw_ethernet_bw
和raw_ethernet_lat
2 安装
在克隆完仓库后,perftest的目录就会出现在你当前的目录下。
克隆仓库举例:
git clone <URL>
git clone https://github.com/linux-rdma/perftest.git
在执行完克隆后,执行以下命令:
-
cd perftest/
-
./autogen.sh
-
./configure
如果想在特定的目录中安装,可以使用–prefix=,例如:./configure --prefix=
-
make
-
make install
3 测试方法说明
基准测试使用CPU周期计数器获取时间戳,而无需上下文切换。然而,某些CPU架构(例如,英特尔80486或更早的PPC)并不具备这种功能。
延迟基准测试测量往返时间,但报告一半作为单向延迟。这意味着结果可能不适用于非对称配置。
在所有单向带宽基准测试中,客户端测量带宽。在双向带宽基准测试中,每个端测量它发起的流量的带宽,并在测量周期结束时,服务器将结果报告给客户端,客户端将它们组合在一起。
延迟测试报告最小、中位数和最大延迟结果。与平均延迟测量相比,中位数延迟通常对高延迟变化更不敏感。通常,由于预热效应,测量的第一个值是最大值。
长采样周期对测量精度影响非常有限。默认值为1000次迭代,这已经相当不错了。请注意,程序会保留与迭代次数成比例的内存占用的数据结构。设置非常高的迭代次数可能会对被测设备的性能产生负面影响,而这些影响与实际测试无关。如果必须使用高迭代次数,建议使用-N标志(No Peak)。
带宽基准测试可以运行多次迭代,也可以固定持续时间运行。使用-D标志指示测试运行指定的秒数。–run_infinitely标志指示程序一直运行,直到用户中断,并每5秒打印一次测量到的带宽。
延迟基准测试中的“-H”选项可以输出结果的直方图。请参考xgraph、ygraph、r-base(http://www.r-project.org/)、PSPP或其他统计分析程序。
重要提示:当在Infiniband链路上运行基准测试时,必须在开始基准测试之前在交换机或链路中的节点之一上运行子网管理器。
测试的架构包括:i686、x86_64和ia64。
4 测试说明
基准测试生成操作的合成流,这对于硬件和软件基准测试和分析非常有用。基准测试不是为模拟任何实际的应用流量而设计的。实际的应用流量可能受到许多参数的影响,因此仅基于这些基准测试的结果可能无法预测。
- ib_send_lat:使用发送事务进行延迟测试
- ib_send_bw:使用发送事务进行带宽测试
- ib_write_lat:使用RDMA写事务进行延迟测试
- ib_write_bw:使用RDMA写事务进行带宽测试
- ib_read_lat:使用RDMA读事务进行延迟测试
- ib_read_bw:使用RDMA读事务进行带宽测试
- ib_atomic_lat:使用原子事务进行延迟测试
- ib_atomic_bw:使用原子事务进行带宽测试
原始以太网接口基准测试:
- raw_ethernet_send_lat:在原始以太网接口上进行延迟测试
- raw_ethernet_send_bw:在原始以太网接口上进行带宽测试
5 运行测试
前提条件:
- 内核版本为2.6
- (内核模块)与libibverbs匹配
- (内核模块)与librdmacm匹配
- (内核模块)与libibumad匹配
- (内核模块)与libmath (lm)匹配
- (Linux内核模块)与pciutils (lpci)匹配。
服务器:使用 ./<test name> <options>
命令启动服务器,其中 <test name>
是测试的名称,<options>
是一些选项参数。
客户端:使用 ./<test name> <options> <server IP address>
命令启动客户端,其中 <test name>
是测试的名称,<options>
是一些选项参数,<server IP address>
是服务器的IP地址。
注意事项:
-
<server address>
可以是IPv4或IPv6地址。如果配置了IPoIB,可以使用 IPoIB 地址。IPoIB(Internet Protocol over InfiniBand),指利用物理IB网络(包括服务器上的IB卡、IB连接线、IB交换机等)通过IP协议进行连接,并进行数据传输。
它提供了基于RDMA之上的IP网络模拟层,允许应用无修改的运行在InfiniBand网络上。但是,IPoIB性能比RDMA通信方式性能要低,大多数应用都会采用RDMA方式获取高带宽低延时的收益,少数的关键应用会采用IPoIB方式通信。
-
--help
选项可以列出可用的选项。
重要提示:必须将相同的选项传递给服务器和客户端。
所有测试的通用选项
-h, --help
:显示帮助信息。-p, --port=<port>
:在端口 上监听或连接到端口(默认为 18515)。-R, --rdma_cm
:使用 rdma_cm 连接 QPs 并在这些 QPs 上运行测试。-z, --com_rdma_cm
:与 rdma_cm 模块通信以交换数据 - 使用常规 QPs。-m, --mtu=<mtu>
:QP MTU 大小(默认为从 ibv_devinfo 获取的活动 MTU)。-c, --connection=<type>
:连接类型 RC/UC/UD/XRC/DC/SRD(默认为 RC)。-d, --ib-dev=<dev>
:使用 IB 设备 (默认为找到的第一个设备)。-i, --ib-port=<port>
:使用 IB 设备的网络端口 (默认为 1)。-s, --size=<size>
:要交换的消息大小(默认为 1)。-a, --all
:从 2 运行到 2^23。-n, --iters=<iters>
:交换次数(至少为 100,默认为 1000)。-x, --gid-index=<index>
:测试使用来自命令的 GID 和 GID 索引。-V, --version
:显示版本号。-e, --events
:在 CQ 事件上休眠(默认为轮询)。-F, --CPU-freq
:即使 cpufreq_ondemand 模块失败也不会失败。-I, --inline_size=<size>
:以内联模式发送的最大消息大小。-u, --qp-timeout=<timeout>
:QP 超时 = (4 uSec)*(2^timeout)(默认为 14)。-S, --sl=<sl>
:服务级别(默认为 0)。-r, --rx-depth=<dep>
:接收队列深度(默认为 600)。
延迟测试选项
-C, --report-cycles
:以 CPU 周期为单位报告时间。-H, --report-histogram
:打印所有结果(默认:仅摘要结果)。-U, --report-unsorted
:打印未排序的结果(默认已排序)。
带宽测试选项
-b, --bidirectional
:测量双向带宽(默认为单向)。-N, --no peak-bw
:取消峰值带宽计算(默认包括峰值带宽)。-Q, --cq-mod
:在 完成后生成 Cqe。-t, --tx-depth=<dep>
:发送队列的大小(默认为 128)。-O, --dualport
:在双端口模式下运行测试(2 QPs)。两个端口都必须处于活动状态(默认关闭)。-D, --duration=<sec>
:以秒为单位运行测试的持续时间。-f, --margin=<sec>
:在持续时间内测量结果,结果必须在边缘范围内(默认为 2)。-l, --post_list=<list size>
:发送 WQEs 的列表大小为 (而不是单个帖子)。
--recv_post_list=<list size>
:接收 WQEs 的列表大小为 (而不是单个帖子)。-q, --qp=<num of qp's>
:进程中运行的 QP 数量(默认为 1)。
--run_infinitely
:在用户中断之前一直运行测试,每 5 秒打印一次结果。
ib_send_lat(发送延迟测试)和 ib_send_bw(发送带宽测试)的选项
-r, --rx-depth=<dep>
:接收队列的大小(默认为 BW 测试中的 512)。-g, --mcg=<num_of_qps>
:向附加了 <num_of_qps> 个 QPs 的多播组发送消息。-M, --MGID=<multicast_gid>
:在多播中,使用 <multicast_gid> 作为组 MGID。
ib_atomic_lat(原子延迟测试)和 ib_atomic_bw(原子带宽测试)的选项
-A, --atomic_type=<type>
:原子操作的类型,可选值为 {CMP_AND_SWAP,FETCH_AND_ADD}。-o, --outs=<num>
:未完成的读/原子请求的数量,也在 READ 测试中使用。
原始以太网发送带宽测试的选项
-B, --source_mac
:源 MAC 地址,格式为 XX:XX:XX:XX:XX:XX(默认使用 GID 的 MAC 地址)。-E, --dest_mac
:目标 MAC 地址,格式为 XX:XX:XX:XX:XX:XX,必须输入。-J, --server_ip
:服务器 IP 地址,格式为 X.X.X.X(用于发送带有 IP 头的包)。-j, --client_ip
:客户端 IP 地址,格式为 X.X.X.X(用于发送带有 IP 头的包)。-K, --server_port
:服务器 UDP 端口号(用于发送带有 UDP 头的包)。-k, --client_port
:客户端 UDP 端口号(用于发送带有 UDP 头的包)。-Z, --server
:选择当前计算机的服务器端(–server/–client 必须被选中)。-P, --client
:选择当前计算机的客户端端(–server/–client 必须被选中)。
相关文章:
RDMA性能测试工具集preftest_README
文章目录 1 概述2 安装3 测试方法说明4 测试说明5 运行测试所有测试的通用选项延迟测试选项带宽测试选项ib_send_lat(发送延迟测试)和 ib_send_bw(发送带宽测试)的选项ib_atomic_lat(原子延迟测试)和 ib_at…...
墨天轮专访星环科技刘熙:“向量热”背后的冷思考,Hippo如何打造“先发”优势?
导读: 深耕技术研发数十载,坚持自主可控发展路。星环科技一路砥砺前行、坚持创新为先,建设了全面的产品矩阵,并于2022年作为首个独立基础软件产品公司成功上市。星环科技在今年的向星力•未来技术大会上发布了分布式向量数据库Tra…...
逆向-beginners之非递归
/* * 非递归 */ void f() { } void main() { f(); } #if 0 /* * intel */ 0000000000001129 <f>: 1129: f3 0f 1e fa endbr64 112d: 55 push %rbp 112e: 48 89 e5 mov %rsp,%…...
Spring for Apache Kafka概述和简单入门
一、概述 Spring for Apache Kafka 的高级概述以及底层概念和可运行的示例代码。 二、准备工作 注意:进行工作开始之前至少要有一个 Apache Kafka 环境 2.1、依赖 使用 Spring Boot<dependency><groupId>org.springframework.kafka</groupId><artifact…...
基于SSM+Vue的医院医患管理系统
末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用Vue技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…...
再次理解Android账号管理体系
目录 ✅ 0. 需求 📂 1. 前言 🔱 2. 使用 2.1 账户体系前提 2.2 创建账户服务 2.3 操作账户-增删改查 💠 3. 源码流程 ✅ 0. 需求 试想,自己去实现一个账号管理体系,该如何做呢? ——————————…...
如何在Blender中压缩/减小GLTF模型的大小
GLTF 如何在Blender中压缩/减小GLTF模型的大小 Blender是一款功能强大的开源软件,旨在创建3D图形,动画和视觉效果。它支持多种文件格式的导入和导出,包括GLB,GLTF,DAE,OBJ,ABC,USD…...
IntelliJ IDEA使用_Plugin插件推荐
官网插件库:https://plugins.jetbrains.com/search 代码规范检测:Alibaba Java Coding Guidelines码云:Giteemybatis插件:MyBatisX多颜色括号:Rainbow Brackets操作快捷键提示:Key Promoter X力扣ÿ…...
Ajax fetch navigator.sendBeacon 三个的区别
Ajax、fetch 和 navigator.sendBeacon 是用于发送网络请求的不同方法。 Ajax: Ajax 是一种传统的用于发送异步请求的技术。它使用 XMLHttpRequest 对象来发送数据和接收响应。通过创建 XMLHttpRequest 对象,你可以通过调用其 open() 方法指定请求的类型和 URL&#…...
map-reduce执行过程
Map阶段 Map 阶段是 MapReduce 框架中的一个重要阶段,它负责将输入数据转换为中间数据。Map 阶段由一个或多个 Map 任务组成,每个 Map 任务负责处理输入数据的一个子集。 执行步骤 Map 阶段的过程可以分为以下几个大步骤: 输入数据分配&a…...
技术人员怎样提升对业务的理解
技术服务于业务。 一个技术人员想要走得更远,不能仅局限于技术,需要对自己所从事的业务领域有不断深入和全面的理解。 所谓业务领域,就是大家平常自我介绍,不会仅简单说我是搞C的,我是搞JAVA的,而是游戏后台…...
【分布式】分布式事务:2PC
分布式事务的问题可以分为两部分: 并发控制 concurrency control原子提交 atomic commit 分布式事务问题的产生场景:一份数据被分片存在多台服务器上,那么每次事务处理都涉及到了多台机器。 可序列化(并发控制)&…...
回归与聚类算法系列④:岭回归
目录 1. 背景 2. 数学模型 3. 特点 4. 应用领域 5. 岭回归与其他正则化方法的比较 6、API 7、代码 8、总结 🍃作者介绍:双非本科大三网络工程专业在读,阿里云专家博主,专注于Java领域学习,擅长web应用开发、数…...
idea配置git(gitee)并提交(commit)推送(push)
Intellij Idea VCS | 版本控制 - 知乎 IDEA项目上传到gitee仓库_idea上传代码到gitee_robin19712的博客-CSDN博客 git程序下载国内镜像地址: https://registry.npmmirror.com/binary.html?pathgit-for-windows/v2.42.0.windows.2/ 解压后放到固定路径:…...
(19)Task异步:任务创建,返回值,异常捕捉,任务取消,临时变量
一、Task任务的创建 1、用四种方式创建,界面button,info各一。 程序代码 private void BtnStart_Click(object sender, EventArgs e){Task t new Task(() >{DisplayMsg($"[{Environment.CurrentManagedThreadId}]new Task.---1");});t.Start()…...
设备树的理解与运用
设备树: 本质是一个文件,包含很多节点,每个节点里边是对设备属性的描述(包括GPIO,时钟,中断等等),其中节点(node)和属性(property)就是设备树最重…...
【AIGC】提示词 Prompt 分享
提示词工程是什么? Prompt engineering(提示词工程)是指在使用语言模型进行生成性任务时,设计和调整输入提示(prompts)以改善模型生成结果的过程。它是一种优化技术,旨在引导模型产生更加准确、…...
【Axure视频教程】取整函数
今天教大家在Axure里如何使用三种不同的取整函数,包括向上取整、向下取整和四舍五入取整。具体效果可以参考下方视频。该教程从0开始制作,手把手教学,无论是新手小白还是有一定基础的同学,都可以学习的哦。 【视频教程——试看版…...
MySQL清空表
当我们需要清空一个表中的所有行时,除了使用 DELETE * FROM table 还可以使用 TRUNCATE TABLE 语句。 如果想要清空一个表, TRUNCATE TABLE 语句比 DELETE语句更加有效。 TRUNCATE TABLE 语法 TRUNCATE TABLE 的语法很简单,如下:…...
使用IDEA创建Vue3通过Vite实现工程化
1、创建Vite项目的分步说明 IntelliJ IDEA与Vite构建工具集成,改善了前端开发体验。Vite 由一个开发服务器和一个构建命令组成。构建服务器通过本机 ES 模块提供源文件。生成命令将代码与汇总捆绑在一起,汇总预配置为输出高度优化的静态资产以供生产。In…...
GitLab使用的最简便方式
GitLab介绍 GitLab是一个基于Git版本控制系统的开源平台,用于代码托管,持续集成,以及协作开发。它提供了一套完整的工具,以帮助开发团队协同工作、管理和部署代码。 往往在企业内部使用gitlab管理代码,记录一下将本地代…...
MySQL数据库20G数据迁移至其他服务器的MySQL库或者云MySQL库
背景:20G的MySQL数据迁移至火山云MySQL库,使用navicat的数据传输工具迁移速度耗费时间过长。 方案一:使用火山云提供的MySQL数据迁移服务(其他大厂应该提供的也有) 方案二:使用数据迁移工具kettle&#x…...
build.gradle配置文件详解
Andorid Studio高版本和低版本的build.gradle配置逻辑有些差异 安卓项目中相关编译文件的介绍 gradle-wrapper.properites:配置Gradle Wrapper gradle.properties:配置Gradle的编译参数。具体配置见Gradle官方文档:com.android.build.gradle | Andro…...
2024拼多多校招面试真题汇总及其解答(二)
6. 【算法题】归并排序 归并排序(Merge Sort)是一种分治算法,它将待排序的序列递归地分成两个子序列,然后将两个有序的子序列合并成一个有序的序列。 归并排序的算法流程如下: 递归地将待排序的序列分成两个子序列,直到每个子序列只有一个元素。将两个有序的子序列合并…...
自动化运维工具Ansible教程(一)【入门篇】
文章目录 前言Ansible 入门到精通入门篇进阶篇精通篇入门篇1. Ansible 简介2. 安装 Ansible1. 通过包管理器安装:2. 通过源码安装: 3. Ansible 的基本概念和核心组件4. 编写和运行第一个 Ansible Playbook5. 主机清单和组织结构主机清单组织结构 6. Ansi…...
计算机毕业设计 微信小程序 uniapp+vue大学生兼职平台
任何系统都要遵循系统设计的基本流程,本系统也不例外,同样需要经过市场调研,需求分析,概要设计,详细设计,编码,测试这些步骤,本系统前台采用微信开发者结合后台Java语言设计并实现了…...
JavaScript框架:构建交互性、现代化Web应用的利器
💂 个人网站:【工具大全】【游戏大全】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 引言 JavaScript框架已…...
数据结构——二分查找法
二分查找法(Binary Search)是一种高效的查找算法,通常用于在已排序的数组或列表中查找特定的目标值。这个算法的基本思想是不断将查找范围缩小为原来的一半,直到找到目标值或确定目标值不存在。 二分查找是一种在每次比较之后将查…...
服务端渲染(SSR):提升Web应用性能和用户体验的关键技术
💂 个人网站:【工具大全】【游戏大全】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 引言 服务端渲染&#…...
如何工作和生活相平衡?
之前待过一家外企,他们的口号是 Balancing work and life,工作和生活相平衡。辗转几家公司之后,发现这个越来越难了,越来越少的时间投入家庭和自己的生活。 人生的意义 (AI) 人生的意义是一个深奥而复杂的…...
10000ip网站怎么做/广告推广代运营公司
和新队友的第一次训练 体验良好 debug到头秃 好困啊靠 A.The Baguette Master 给一个四边形相框的宽度和边框内侧四条边对角线AD的程度,求外侧周长 如图,对四个点做垂线(因为懒所以只挑了两个角来做),将总长度分为…...
中国建筑集团2023招聘官网/网站seo网络优化
题库来源:安全生产模拟考试一点通公众号小程序 2021年西式面点师(初级)新版试题及西式面点师(初级)考试平台,包含西式面点师(初级)新版试题答案和解析及西式面点师(初级…...
怎样说服客户做网站/今日国际军事新闻
1.wmicMicrosoft Windows Management Instrumentation2. C:\WINDOWS\system32\wbem 下的东西,特别是.xsl格式化文件,实现wmic的格式化输出如wmic /output:c:\process.html process list /format:htable.xsl/format:textvaluelist.xsl/format:hform.xsl/f…...
北京网站制作公司哪家好/关键词优化的建议
如果你想写一个手机系统上的程序,你会怎么做呢?我们可能会想到,开发一个手机上的编译器,然后把程序放到上面编译成手机可以运行的机器代码。但是这样就有一个很大的问题了,那就是手机的运行速度和电脑相比十分缓慢&…...
网上做网站过程/西安网站seo
分析R2016a版本中自带的使能子系统的demo。 模型名称:enabsubs.slx 模型简介: 1)首先,分两个大的模块,上面的是离散系统,下面的连续系统。正弦波的采样时间参数不同: 2)离散系统中…...
俄罗斯外贸常用网站/h5制作
控制标注哪些要素若要更精确地控制标注哪些要素和标注放置位置,您需要使用更高级的标注属性。具体而言,您可以调整标注哪些要素以及标注相对于要素的放置位置。有四种方法可控制需要标注哪些要素:1.设置控制标注在地图上放置顺序的标注优先级…...