searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

RDMA性能测试工具perftest简介

2023-12-11 06:32:12
1016
0

       perftest是RDMA性能测试工具,该工具由开源社区维护并发布。针对RDMA的5种操作类型:Send、RDMA Read、RDMA Write、RDMA Atomic、Native Ethernet进行带宽和时延测试。

一、RDMA简介

在进行perftest测试之前需要对RDMA做一些基本的了解:

        RDMA (Remote Direct Memroy Access )为了消除传统网络通信带给计算任务的瓶颈,利用 Kernel Bypass 和 Zero Copy技术提供了低延迟的特性,同时减少了CPU占用,减少了内存带宽瓶颈,提供了很高的带宽利用率。RDMA提供了给基于 IO 的通道,这种通道允许一个应用程序通过RDMA设备对远程的虚拟内存进行直接的读写。RDMA允许用户态的应用程序直接读取或写入远程内存,不经过操作系统,无内核干预和内存拷贝发生,节省了大量 CPU 资源,提高了系统吞吐量、降低了系统的网络通信延迟。


        RDMA通信需要建立RDMA连接。涉及到如下基本概念:

CQ:完成队列,用于接收或着发送完成事件,其中存放 CQE(完成队列事件)。当一次收发完成时硬件会在QP关联的CQ中放入一个CQE,这个CQE在用户读取CQ时被verbs库转换为WC递交给用户。一个WC包含3个关键信息:QPN即产生完成事件的队列是哪个,status发生了什么事,WR_ID即完成事件所关联的WR。

QP:创建一个queue pair,有1个发送队列,1个接收队列,指定队列深度和队列类型,并且绑定对应的发送cq,接收cq。WQE(work request element),放在发送队列和接送队列中。

WR:work request,WR是面向用户的,用户调用verbs将wr转换成面向硬件的WQE,放入send queue中。

        RDMA操作类型:

Send queue中可以有四种种类型的WQE:SEND WQE、Write WQE(写远端内存)、Read WQE(读远端内存)、Atomic WQE。

SEND WQE:是一种比较通用的WQE,可以用于发送任何类型的数据。它包含一个发送操作所需的信息,包括源内存地址、目的内存地址、数据长度等。还包含操作类型、优先级、QoS标记等,SEND WQE还支持多个操作,例如一个发送操作可以包含多个WQE,以便将多个数据块一次性发送到目标设备。

Write WQE:专门用于写入操作,可以更高效的执行写入。它包含了要写入的目标内存地址、数据长度等信息,还包含操作类型、优先级、QoS标记等。从本地内存copy一段数据至远端内存,不通知对端CPU,故称单边写。单边写需要预先知道对端的VA和RKEY。单边写虽不在对端产生通知,但会在写完成后在本端产生通知。

Atomic WQE:一种基于RMDA技术的原子工作队列条目。它用于实现原子操作,可以在分布式系统中的多个节点之间进行同步和协调操作。Atomic WQE可以确保在多处理器系统中,对共享数据的访问和修改是原子的,即不会被其他处理器同时访问或修改。这种技术可以用于实现各种并行和分布式应用程序,如数据库、文件系统、数据处理等。

        RDMA服务类型:

RDMA服务类型分为两个维度。常用的就是RC和UD,其他的很少有人去实现。

每种服务类型支持的操作类型如下:

二、perftest使用

以Mellanox网卡测试为例。可以进入Mellanox官网下载OFED包。对OFED包解压后,其中有做好的RPM包,也有打包好的perftest源码。

1.以rpm包安装

  • tar xvf MLNX_OFED_LINUX-23.10-0.5.5.0-rhel7.6-x86_64.tgz
  • cd RPMS/
  • rpm -ivh libibumad-2307mlnx47-1.2310055.x86_64.rpm libibverbs-* librdmacm-*
  • rpm -ivh perftest-23.10.0-0.29.g0705c22.2310055.x86_64.rpm

2.源码编译安装

-cd perftest/

-./autogen.sh

-./configure 

-make

-make install

3.perftest安装好后,有如下测试工具分别用于RDMA不同操作类型的测试。

4.测试举例

测试send带宽:

服务端:ib_send_bw -d rxe_0               ##-d指定网卡

客户端:ib_send_bw -d rxe_0 <server ip>

测试结果:

 

0条评论
作者已关闭评论
林****龙
4文章数
0粉丝数
林****龙
4 文章 | 0 粉丝
原创

RDMA性能测试工具perftest简介

2023-12-11 06:32:12
1016
0

       perftest是RDMA性能测试工具,该工具由开源社区维护并发布。针对RDMA的5种操作类型:Send、RDMA Read、RDMA Write、RDMA Atomic、Native Ethernet进行带宽和时延测试。

一、RDMA简介

在进行perftest测试之前需要对RDMA做一些基本的了解:

        RDMA (Remote Direct Memroy Access )为了消除传统网络通信带给计算任务的瓶颈,利用 Kernel Bypass 和 Zero Copy技术提供了低延迟的特性,同时减少了CPU占用,减少了内存带宽瓶颈,提供了很高的带宽利用率。RDMA提供了给基于 IO 的通道,这种通道允许一个应用程序通过RDMA设备对远程的虚拟内存进行直接的读写。RDMA允许用户态的应用程序直接读取或写入远程内存,不经过操作系统,无内核干预和内存拷贝发生,节省了大量 CPU 资源,提高了系统吞吐量、降低了系统的网络通信延迟。


        RDMA通信需要建立RDMA连接。涉及到如下基本概念:

CQ:完成队列,用于接收或着发送完成事件,其中存放 CQE(完成队列事件)。当一次收发完成时硬件会在QP关联的CQ中放入一个CQE,这个CQE在用户读取CQ时被verbs库转换为WC递交给用户。一个WC包含3个关键信息:QPN即产生完成事件的队列是哪个,status发生了什么事,WR_ID即完成事件所关联的WR。

QP:创建一个queue pair,有1个发送队列,1个接收队列,指定队列深度和队列类型,并且绑定对应的发送cq,接收cq。WQE(work request element),放在发送队列和接送队列中。

WR:work request,WR是面向用户的,用户调用verbs将wr转换成面向硬件的WQE,放入send queue中。

        RDMA操作类型:

Send queue中可以有四种种类型的WQE:SEND WQE、Write WQE(写远端内存)、Read WQE(读远端内存)、Atomic WQE。

SEND WQE:是一种比较通用的WQE,可以用于发送任何类型的数据。它包含一个发送操作所需的信息,包括源内存地址、目的内存地址、数据长度等。还包含操作类型、优先级、QoS标记等,SEND WQE还支持多个操作,例如一个发送操作可以包含多个WQE,以便将多个数据块一次性发送到目标设备。

Write WQE:专门用于写入操作,可以更高效的执行写入。它包含了要写入的目标内存地址、数据长度等信息,还包含操作类型、优先级、QoS标记等。从本地内存copy一段数据至远端内存,不通知对端CPU,故称单边写。单边写需要预先知道对端的VA和RKEY。单边写虽不在对端产生通知,但会在写完成后在本端产生通知。

Atomic WQE:一种基于RMDA技术的原子工作队列条目。它用于实现原子操作,可以在分布式系统中的多个节点之间进行同步和协调操作。Atomic WQE可以确保在多处理器系统中,对共享数据的访问和修改是原子的,即不会被其他处理器同时访问或修改。这种技术可以用于实现各种并行和分布式应用程序,如数据库、文件系统、数据处理等。

        RDMA服务类型:

RDMA服务类型分为两个维度。常用的就是RC和UD,其他的很少有人去实现。

每种服务类型支持的操作类型如下:

二、perftest使用

以Mellanox网卡测试为例。可以进入Mellanox官网下载OFED包。对OFED包解压后,其中有做好的RPM包,也有打包好的perftest源码。

1.以rpm包安装

  • tar xvf MLNX_OFED_LINUX-23.10-0.5.5.0-rhel7.6-x86_64.tgz
  • cd RPMS/
  • rpm -ivh libibumad-2307mlnx47-1.2310055.x86_64.rpm libibverbs-* librdmacm-*
  • rpm -ivh perftest-23.10.0-0.29.g0705c22.2310055.x86_64.rpm

2.源码编译安装

-cd perftest/

-./autogen.sh

-./configure 

-make

-make install

3.perftest安装好后,有如下测试工具分别用于RDMA不同操作类型的测试。

4.测试举例

测试send带宽:

服务端:ib_send_bw -d rxe_0               ##-d指定网卡

客户端:ib_send_bw -d rxe_0 <server ip>

测试结果:

 

文章来自个人专栏
软硬结合测试
4 文章 | 1 订阅
0条评论
作者已关闭评论
作者已关闭评论
2
0