• 【infiniband】用udaddy测试RDMA_CM API通过GID连接


    一、udaddy介绍

    udaddy 是一个命令行工具,用于测试和验证基于 InfiniBand 的网络性能。InfiniBand 是一种高性能的、低延迟的网络通信技术,通常用于超级计算机和数据中心的高速互联网络。`udaddy` 是由 OpenFabrics Alliance 提供的 OpenFabrics Enterprise Distribution (OFED) 的一部分。

    udaddy 实际上是一个针对InfiniBand设备的用户态应用程序。"udaddy" 代表 "User-space Datagram Daddy",意在表明它是使用InfiniBand中的"datagram"传输服务来进行点对点通信测试的工具。基于 RDMA 的传输可以让网络应用直接访问远程主机的内存,而不需要通过操作系统的内核,这样可以实现非常高的吞吐量和低迟延。

    应用 udaddy 的常见场景包括:

    - 测试网络设置和配置
    - RDMA 编程的示例和教学
    - 性能基准测试和分析
    - 故障排除和网络问题调试

    `udaddy` 现在是 rdma-core 软件包的一部分。`rdma-core` 是开源的 RDMA (Remote Direct Memory Access) 核心用户空间库和驱动的集合,它取代了早期的 OpenFabrics Enterprise Distribution (OFED)。`rdma-core` 提供了用于管理和使用 InfiniBand, RoCE, iWARP 等 RDMA 技术的工具和库。

    rdma-core 包括多种 RDMA 用户空间应用程序和测试工具,`udaddy` 是其中的一个工具,主要用于验证和测试 RDMA 通信。因此,如果你正在使用较新的 Linux 发行版,并关注 RDMA 编程或网络测试,可能需要安装 rdma-core 软件包来获取 udaddy 以及其他相关的 RDMA 工具和库。你可以通过包管理器安装 rdma-core,例如使用 yum 或 apt 命令,具体取决于你使用的 Linux 发行版。

    要启动一个基本的 udaddy 测试,首先需要确保系统有相关的硬件支持,并且InfiniBand网络已配置正确。然后,可以在服务器上运行 udaddy 以待连接,而在客户端上运行命令以实现连接和测试。`udaddy` 允许进行修改和自定义测试参数,以适应不同的测试场景和要求。

    请注意:使用 udaddy 或任何网络测试工具时,必须确保网络的其他用户不会因为这些测试而受到影响。通常这些测试最好在控制环境中进行,例如在维护期间或在特定为测试配置的网络段上。

    `udaddy` 是使用 RDMA Connection Manager (RDMA_CM) API 而不是直接使用 InfiniBand Verbs API。

    InfiniBand Verbs 是底层的编程接口,允许应用直接与InfiniBand硬件进行交互。然而,RDMA_CM 提供了一个更高级别的抽象,简化了进行 RDMA 通信的连接建立和管理过程。通过使用 RDMA_CM API,程序不需要处理许多底层的细节,如交换必要的连接参数或直接与队列对(Queue Pair)进行交互。

    udaddy 使用 RDMA_CM API 来建立连接,传输数据,并进行清理。通过这种方式,它可以测试和练习使用 RDMA_CM 的应用编程,并且使得底层的通信机制更加易于处理。这对于需要利用 RDMA 进行高速网络通信的应用开发者而言,是十分有用的。

    二、udaddy通过GID连接

    1. 运行ibv_devinfo -vv

    找到GID[  0]。

    2.udaddy用GID[  0]测试连接

    例如,

    服务器:

    1. root@debian:~/infiniband/rdma-core-50mlnx1# build/bin/udaddy -f gid -b fe80:0000:0000:0000:e41d:2e03:0051:26d1
    2. udaddy: starting server
    3. test.rai->ai_src_addr->sa_family:27
    4. receiving data transfers
    5. sending replies
    6. data transfers complete
    7. test complete
    8. return status 0

    客户端:

    1. root@debian:~/infiniband/rdma-core-50mlnx1# build/bin/udaddy -f gid -s fe80:0000:0000:0000:e41d:2e03:0051:26d1
    2. udaddy: starting client
    3. udaddy: connecting
    4. initiating data transfers
    5. receiving data transfers
    6. data transfers complete
    7. test complete
    8. return status 0

  • 相关阅读:
    基于视觉重定位的室内AR导航APP的大创项目思路(1):最初的项目思路(SLAM)
    C#,骑士游历问题(Knight‘s Tour Problem)的恩斯多夫(Warnsdorff‘s Algorithm)算法与源代码
    Nginx01-HTTP简介与Nginx简介(安装、命令介绍、目录介绍、配置文件介绍)
    Hashmap
    打通AI应用工业化大生产全流程:昇腾注解“AI向上的力量”
    Spring IOC工厂
    【sw网络监控】通过snmp协议相关的snmp-exporter(收集交换机网络监控数据)+ promethus + grafana
    技术分享 | Jenkins中,如何管理用户及其相对应权限?
    DAY51
    Nginx基础篇-Nginx的日志模块
  • 原文地址:https://blog.csdn.net/eidolon_foot/article/details/132719383