【RDMA】rdma-core驱动源码包|ibverbs|rdmacm

目录

源码包

编译

用法

驱动包内的例子

其他


源码包

mellanox的rdma驱动源码包形式如下:

MLNX_OFED_LINUX-5.8-1.1.2.1-rhel9.0-ext/src/MLNX_OFED_SRC-5.8-1.1.2.1/SRPMS

rdma-core-58mlnx43-1.58112.src.rpm

rpm -ivh  rdma-core-58mlnx43-1.58112.src.rpm 安装完成后

源码解压到:/root/rpmbuild/SOURCES/

RDMA Core Userspace Libraries and Daemons

这是 Linux 内核驱动程序的用户空间组件,属于/infiniband 子系统。具体包含以下设备节点的用户空间库:

libibverbs RDMA 内核驱动程序的用户空间组件包含在 providers/ 目录下。支持以下内核 RDMA 驱动程序:

此外,还提供了以下额外的服务守护进程:

 

编译

Building

进入驱动包目录,执行:

$ bash build.sh

输出在:build/bin build/lib

 

build/bin 目录包含示例程序,build/lib 目录包含共享库。构建配置是“原地”运行所有程序的,因此无法安装。

注意:目前不易从构建目录运行插件,插件仅从系统路径加载

编译之前环境可能需要安装一些依赖,如:

CentOS 7:

$ yum install epel-release

$ yum install cmake3 ninja-build pandoc

详情见README.md

用法

驱动包内的例子

驱动包例子的源码在驱动包的excample内

 rdma_xclient.c 和 rdma_client.c 的区别

rdma_xclient.c  客户端只发,接收端只收

rdma_client.c    双边相互收发

使用 RDMA verbs API,较为底层,需要手动管理连接和操作;使用 RDMA CM API,更高层,封装了一些操作,使得代码更简洁易读。

rdma_xserver和rdma_xclient

用法:

usage: rdma_xserver

        [-p port_number]

        [-c communication type]

            r - RC: reliable-connected (default)

            x - XRC: extended-reliable-connected

usage: rdma_xclient

        [-s server]

        [-p port_number]

        [-c communication type]

            r - RC: reliable-connected (default)

            x - XRC: extended-reliable-connected

服务端:

rdma_xserver -p 8888

客户端:

rdma_xclient -s 10.252.8.1 -p 8888

rdma_server和rdma_client

usage: rdma_server

        [-s server_address]

        [-p port_number]

usage: rdma_xclient

        [-s server]

        [-p port_number]

        [-c communication type]

            r - RC: reliable-connected (default)

            x - XRC: extended-reliable-connected

服务端:

rdma_server -s 10.252.8.1 -p 8888

客户端:

rdma_client -s 10.252.8.1 -p 8888

其他

在编译出来的bin下还有:

[root@localhost bin]# ls

check_lft_balance.pl  ibaddr               iblinkinfo     ibrouters   ibv_asyncwatch    ibv_xsrq_pingpong  rdma_server   sminfo      udpong

cmtime                ibcacheedit          ibnetdiscover  ibsendtrap  ibv_devices       mckey              rdma_xclient  smpdump     umad_compile_test

dump_fts              ibccconfig           ibnodes        ibstat      ibv_devinfo       mcm_rereg_test     rdma_xserver  smpquery    umad_reg2

dump_lfts.sh          ibccquery            ibping         ibstatus    ibv_rc_pingpong   perfquery          riostream     srp_daemon  umad_register2

dump_mfts.sh          ibfindnodesusing.pl  ibportstate    ibswitches  ibv_srq_pingpong  rcopy              rping         testleaks   umad_sa_mcm_rereg_test

ibacm                 ibhosts              ibqueryerrors  ibsysstat   ibv_uc_pingpong   rdma_client        rstream       ucmatose    vendstat

ib_acme               ibidsverify.pl       ibroute        ibtracert   ibv_ud_pingpong   rdma_rename        saquery       udaddy

他们的用法可以使用:man xxx 查询 如:man rdma_client

udaddy  “udp”的测试

如果系统上没有安装doc手册,则可以访问: Index of /linux/man-pages/man1     在页面搜索相关的命令,查看其用法

cmtime

确定客户端和服务器应用程序之间的RDMA CM连接建立和拆除中各个“步骤”的最小和最大时间定时的“步骤”包括:

创建id、绑定地址、解析地址、解析路由、创建qp、连接、断开连接和销毁。

例子:

服务端

cmtime -p 888

客户端:

cmtime -p 888 -s 10.252.8.1

-s server_address 服务器系统监听连接的网络名称或IP地址。所使用的名称或地址必须经过RDMA设备路由。客户端需

指定。

-b bind_address

要绑定到的本地网络地址。

-c connections

客户端与服务器之间建立的连接数。(默认100)

-p port_number

服务器的端口号。

-r retries

解析地址或路由时的重试次数。(默认2)

-t timeout_ms

解析地址或路由时的超时时间,以毫秒(ms)为单位。(默认2000 - 2秒)

ucmatose

使用librdmacm在两个节点之间建立一组可靠的RDMA连接,可选择在节点之间传输数据,然后断开连接。

 

用法:

ucmatose [-s server_address] [-b bind_address]
                 [-f address_format] [-P port_space]
                 [-c connections] [-C message_count] [-S message_size] [-a ack_timeout]
      
ucmatose -s server_address [-b bind_address]
                 [-f address_format] [-P port_space]
                 [-c connections] [-C message_count] [-S message_size] [-t tos] [-a ack_timeout]

例子:

服务端:

ucmatose -b 10.252.8.1

客户端:

ucmatose  -s 10.252.8.1

ucmatose -b 10.252.64.25 -c 10

ucmatose -s 10.252.64.25 -c 10

rping

建立可靠的RDMA连接,使用librdmacm在两个节点之间。可选择在节点之间执行RDMA传输,然后断开连接。

mckey

使用librdmacm在节点之间建立一组RDMA多播通信路径,可选择将数据包传输给接收节点,然后拆除通信。

 

 

ib_acme ib_acme是用于IB ACM的测试和配置utility

ibv_rc_pingpong 通过可靠连接(RC)传输,在InfiniBand上运行一个简单的乒乓测试。

\ibv_uc_pingpong\ibv_ud_pingpong

ibv_srq_pingpong 通过可靠的连接(RC)传输,使用多个队列对(QPs)和一个共享的接收队列(SRQ),运行一个简单的InfiniBand ping-pong测试。

ibv_xsrq_pingpong:InfiniBand上通过扩展可靠连接(XRC)传输服务运行一个简单的乒乓测试,使用共享接收队列(SRQ)。

riostream

使用RDMA协议(rsocket)进行流式传输,以连接和交换客户端和服务器应用程序之间的数据。

rstream

使用基于RDMA的流协议(rsocket)来连接客户端和服务器应用程序之间的数据交换。

udpong

使用不可靠的数据报流通过RDMA协议(rsocket)在客户端和服务器应用程序之间建立连接并交换数据。

RDMA的工具:

ibv_asyncwatch  将转发到用户空间的 RDMA 设备的异步事件显示出来。

ibv_asyncwatch -d mlx5_bond_0

vendstat

使用特定厂商的 MAD(管理数据包)来访问超出 IB 规范的厂商特定功能。目前,支持 Mellanox InfiniSwitch-III(IS3)和 InfiniSwitch-IV(IS4)。

  • srp_daemon(ib_srp.ko)
  • iwpmd(针对 iwarp 内核提供程序)
  • ibacm(用于 InfiniBand 通信管理助手)
  • efa.ko
  • iw_cxgb4.ko
  • hfi1.ko
  • hns-roce.ko
  • i40iw.ko
  • ib_qib.ko
  • mlx4_ib.ko
  • mlx5_ib.ko
  • ib_mthca.ko
  • ocrdma.ko
  • qedr.ko
  • rdma_rxe.ko
  • siw.ko
  • vmw_pvrdma.ko
  • /dev/infiniband/uverbsX(libibverbs)
  • /dev/infiniband/rdma_cm(librdmacm)
  • /dev/infiniband/umadX(libibumad)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/311261.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端基础:Vue搞笑白话文(工作之余瞎写)

1、data:{}与data(){return{}}这两个是个什么鬼? vue实例 new Vue({el:#app,data:{name:李四}}) 组件实例 const aaa Vue.extent({data(){return {name:}} }) 为什么Vue实例可以那么写而组件实例就不行了?原因就是因为在底层原理上,组件…

VSCode团队工程实践:通过名称混淆将代码大小减少了20%

​我们最近将Visual Studio Code的JavaScript代码大小减少了20%。这相当于节省了3.9 MB多一点的空间。当然,这比我们发布说明中的一些单个gif图片的大小要少,但这仍然十分可观。这种减少不仅意味着您需要下载和存储在磁盘上的代码更少,而且还…

蓝桥杯C/C++程序设计——成绩统计

题目描述 小蓝给学生们组织了一场考试,卷面总分为 100 分,每个学生的得分都是一个 0 到 100 的整数。 如果得分至少是 60 分,则称为及格。如果得分至少为 85 分,则称为优秀。 请计算及格率和优秀率,用百分数表示&am…

Git 常用命令知识笔记

Git 仓库数据结构 Git 仓库由一个个的 commit 组成某些 commit 上会有一些 branch 指向它们,这些 branch 的本质是引用有一个特殊的引用叫做 HEAD,它始终指向当前的位置,这个位置可以是 commit,也可以是 branch staging area 暂存…

政务大数据能力平台建设方案:文件全文30页,附下载

关键词:智慧政务解决方案,智慧政务建设,智慧政务服务平台,智慧政务大数据,数字政务一体化平台。大数据,政务大数据建设 一、智慧政务建设需求 1、政务服务需求:智慧政务建设需要满足人民群众的…

单片机原理及应用:开关控制LED多种点亮模式

从这篇文章开始,我们不再只研究单一的外设工作,而是将LED、数码管、开关、按键搭配在一起研究,这篇文章主要介绍LED和开关能擦出怎样的火花,同时也介绍一些函数封装的知识。 由于开关有闭合与打开两种状态,LED有左移流…

CentOS虚拟机硬盘管理

CentOS虚拟机硬盘管理 一、创建虚拟机时分配硬盘 创建虚拟机时,在下图这个页面需要重新选择一下硬盘,可以对硬盘进行配置。 默认自动分区 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/e9ce72af3d934e75be95f7f86860e92b.png 选择确认分…

ctfshow——文件上传

文章目录 文件上传思路web 151web 152web 153知识点解题 web 154web 155web 156web 157web 158web 159web160web 161 文件上传思路 web 151 打开页面显示:前台校验不可靠。说明这题是前端验证。 右键查看源代码,找到与上传点有关的前端代码&#xff1a…

Mybatis 事务接口

当我们从数据源中得到一个可用的数据库连接之后,就可以开启一个数据库事务了,事务成功开启之后,我们才能修改数据库中的数据。 在修改完成之后,我们需要提交事务,完成整个事务内的全部修改操作,如果修改过…

uni-app App.vue生命周期全局样式全局存储globalData

锋哥原创的uni-app视频教程: 2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中..._哔哩哔哩_bilibili2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中...共计23条视频,包括:第1讲 uni…

股票价格预测 | Python实现Autoformer, FEDformer和PatchTST等模型用于股价预测

文章目录 效果一览文章概述环境描述源码设计效果一览 文章概述 Autoformer、FEDformer和PatchTST是一些用于时间序列预测,包括股价预测的模型。它们都是在Transformer模型的基础上进行了改进和扩展,以更好地适应时间序列数据的特点。 Autoformer:Autoformer是一种自适应Tran…

MySQL基础入门(二)

多表内容 一对多 这个内容是黑马的入门问题,可以带大家思考一下这个怎么设计 我们要知道一个岗位可以对应很多用户,而一个用户只能对应一个岗位,这就属于一对多的类型 那么我们需要怎么将他们进行关联呢? 现在我们可以通过一个…