InfiniBand 入门 IB RDMA

InfiniBand 入门

使用新的基于 InfiniBand 的网络的第一步是安装正确的软件包。这些是我们发布的与 infiniband 相关的软件包以及它们的用途(注意,Fedora 软件包尚未全部构建或推送到存储库,因此这里提到的它们是“即将推出”的品种,而不是已经完成的品种) ):

openib - 包含 openibd 初始化脚本的基础包,该脚本在启动时加载所有必需的内核模块。默认情况下不启用 init 脚本,用户需要运行“chkconfig --level 2345 openibd on”才能启用该服务。您可以通过编辑/etc/ofed/openib.conf来配置要加载的上层模块。

rdma - 这是与 openib 软件包相同的软件包,仅存在于 Fedora 中,并将存在于 RHEL6 及更高版本中。openib 软件包名称是历史性的,并且在产品生命周期中更改会出现问题。除了服务名为 rdma 并且配置文件为 /etc/rdma/rdma.conf 之外,一切与 openib 相同。

libibverbs - 核心用户空间库,在 infiniband 和 iwarp 硬件上实现硬件抽象动词协议。

libmthca、libmlx4、libipathverbs、libehca、libcxgb3、libnes - 用户空间硬件驱动程序模块,用于实现 libibverbs 用于提供与硬件无关的动词 API 的硬件特定位摆弄操作。注意:这些库与内核硬件驱动程序模块紧密相关,因此它们必须与它们打算使用的内核系列一起使用。这意味着,如果您运行的是带有 RHEL5.1 内核的 RHEL5.1 系统,并且 RHEL5.2 libcxgb3 有您需要的错误修复,请将 libcxgb3 库升级到 RHEL5.2 版本,而无需切换到 RHEL5.2内核不受支持,并且根本不保证可以工作。infiniband 堆栈的内核部分和 infiniband 堆栈的整个用户空间部分可能会因版本不同而发生变化,并且当不同版本的组件混合和匹配时,不能保证能够正常工作。

libibcm、librdmacm - 用于简化 infiniband 主机之间启动连接过程的库,主要用于应用程序开发。libibcm 库使用 infinband 本机硬件地址来指定要打开到哪台计算机的连接,而 librdmacm 允许您使用 tcp/ip 地址指定连接,即使它打开 rdma 特定连接也是如此。librdmacm-utils 软件包包含一些用于测试网络连接的工具。

libibcommon、libibumad、libibmad - 用于创建管理消息的库。除非您正在编写子网管理器或结构诊断包,否则您可能不需要这些。然而,它们被 opensm、infinband-diags、ibutils 和 ibsim 使用。

opensm - 无限带宽子网管理器。为了启用此功能,您启用了 opensmd 服务脚本。配置可以通过 /etc/ofed/opensm.conf 文件(fedora 中的 /etc/rdma/opensm.conf)完成。

dapl - 这是一个应用程序开发环境,为机器/机器操作提供传输中立的 API。它主要用于新开发,或由闭源英特尔 MPI 使用(我们不发货,显然因为它是闭源的)。dapl-utils 包中有一些用于测试 dapl 设置的实用程序。

ibutils、infiniband-diags(以前称为 openib-diags) - 这里有各种实用程序,用于访问 infiniband 结构的运行状况并测试端到端连接。

ibsim - 这是一个 infiniband 结构模拟器。通过创建一个模仿您想要的物理网络/交换机布局的拓扑文件,并指定其他相关因素,您可以测试网络的整体模拟性能。

libsdp(仅限 RHEL,fedora 中没有,也永远不会) - 该库允许您透明地使 tcp/ip 应用程序在 RDMA 特定网络结构上使用有限形式的 RDMA。如果您修改应用程序以了解和使用 RDMA,您将不会获得那么好的性能,但它的性能仍然比常规 tcp/ip over infiniband (IPoIB) 接口更好(更多有关 IPoIB 的信息请参见设置部分) 。

mstflint、tvflash - 这些都是用于在基于 Mellanox 的 infiniband 硬件上刻录新固件的工具。

perftest、qperf - 特定于 RDMA 结构的性能测试工具。

ofed-docs - 来自上游 OFED 项目的文档。

qlvnictools - 专门用于配置参与 QLogic 专有 InfiniPath 交换机 VLAN 设置的工具。仅当您拥有正确的 IniniPath 交换机硬件和 IPath 主机适配器时,此功能才有效。

srptools - 用于附加和维护基于 SRP 协议的磁盘的简单守护进程。

mpi-selector - 基于简单登录脚本的应用程序,允许选择系统范围或用户特定的默认 MPI 实现。

openmpi、mvapich、mvapich2(这两个 mvapich 均为 rhel5.3/4.8 及更高版本) - 三个相互竞争的 MPI 实现。OpenMPI 是一种符合 MPI2 的实现,通常是最模块化和最完整的,它适用于更多架构(除了 s390/s390x 之外的所有架构),并且是最灵活的。Mvapich 仅兼容 MPI1,并且适用于一组更有限的体系结构(i386、ia64、x86_64、ppc64),它也仅在 inifinband/iwarp 上运行,它不会在普通 tcp/ip 网络上运行。然而,它应该是我们发布的最快的 MPI。mvapich2 实现是 mvapich 的 MPI2 兼容版本,除了目前不支持 ppc64 架构之外,在大多数方面都是相同的。

mpitests - 一系列软件包,旨在为上述每个 mpi 实现提供测试应用程序(在 rhel5.3/4.8 中)。

安装正确的软件包后,下一步就是进行基本的系统设置。infiniband 堆栈既基于内核又基于用户。为了使用任何给定的硬件,您需要该硬件的内核驱动程序和该硬件的用户空间驱动程序。对于 mlx4 硬件(由两部分组成的内核驱动程序),这意味着您需要核心 mlx4 内核驱动程序 (mlx4_core) 以及 infiniband mlx4 驱动程序 (mlx4_ib)。使用 infiniband 时,最好确保安装了 openib 软件包。然后,如果您启用了 openidb 服务,这些驱动程序将自动为您加载到内核中。这将处理内核空间组件(您不需要告诉 openibd 您拥有什么硬件,它会自行计算)。您可以通过编辑 /etc/ofed/openib.conf 来调整加载的内核空间模块以满足您的需求。

如果您尝试运行 infiniband 应用程序并且它说您没有硬件,那么这意味着您要么没有启用 openibd 服务,要么您确实没有任何硬件;-) 但是,如果它说找不到硬件的驱动程序,那么它谈论的是用户空间驱动程序,而不是内核空间驱动程序。

对于用户空间组件,您需要安装核心 infiniband 硬件库 libibverbs,还需要安装特定于硬件的库包。常见的硬件特定库包有:libmthca、libmlx4、libipathverbs、libcxgb3、libehca、libnes。安装这些软件包后,libibverbs 库会自动加载必要的软件包,以支持内核在您的计算机中检测到的硬件。

一旦加载了正确的内核空间和用户空间硬件驱动程序,您就几乎准备好开始基本测试了。您需要的下一件事是选择一台(或多台,但更多需要手动编辑设置,我在此不介绍)机器作为 infiniband 网络的子网管理器。该计算机需要安装 opensm 软件包并启用其服务脚本 opensmd。默认设置适用于大多数人,但是,如果您有多个冗余的 infiniband 网络结构,那么您将需要配置多于一台计算机来启动 opensm,因为它每次运行时只会连接到一个结构,并且您需要配置 opensm 的附加实例以绑定到正确的端口,以便它管理冗余网络结构而不是默认结构。您可以编辑 /etc/ofed/opensm.conf 来更改 opensm 绑定的端口(注意:与 rhel5.2/4.7 中的文件相比,rhel5.3/4.8 中的 opensm.conf 文件正在更改格式,因此手动修改将当这些更新发布时,需要向前移植到新的配置文件)。

一旦选择了 opensm 机器,并且在启用了 openibd 和 opensmd 服务的情况下启动了机器,您应该拥有一个功能性的 infiniband 结构。测试这一点的一个简单方法是确保安装了 libibverbs-utils 软件包并运行 ibv_devinfo 和 ibv_devices 以查看系统认为存在哪些 infiniband/iwarp 设备。假设找到您的设备并且 ibv_devinfo 显示您的端口状态为活动状态,那么您就可以在 infiniband 结构上运行程序了。

除此之外,您还可以通过 infiniband 网络 (IPoIB) 创建 tcp/ip 接口。为此,您需要在 /etc/sysconfig/network-scripts 中创建 ifcfg-ib0(可能还有 ifcfg-ib1)文件。IPoIB 接口类型尚未添加到我们的 system-config-network 工具中,因此需要手动创建文件。另外,IPoIB接口不支持dhcp,因此必须静态配置。示例 ifcfg-ib0 文件如下所示:

设备=ib0
类型=无限带宽
BOOTPROTO=静态
广播=192.168.0.255
IPADDR=192.168.0.1
网络掩码=255.255.255.0
网络=192.168.0.0
启动=是

如果您有两个 IB 端口插入同一个 infiniband 结构(即在同一子网上,而不是每个端口在其自己的子网上),并且您还在两个端口上启用了 IPoIB,那么为了避免可能出现的混淆为什么在使用 IPoIB 接口地址启动计算机之间的连接时有时有效有时无效,最好将以下行添加到 /etc/sysctl.conf 文件中:

net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.ib0.arp_ignore=1
net.ipv4.conf.ib1.arp_ignore=1

如果您希望能够以 root 以外的任何用户身份使用应用程序运行 infiniband,则还需要调整系统的最大锁定内存。这是通过修改 /etc/security/limits.conf 文件来完成的。根据您是否要释放对允许运行 infiniband 应用程序的特定组或对所有登录的限制,您的更改应如下所示:

@ib_user - 内存锁 8192

或者

* - 内存锁8192

上面使用的值是示例值。您可以将限制设置为 -1 以完全删除该限制。您的应用程序需要的实际锁定内存量取决于它将打开的连接数以及为每个连接分配的消息队列的大小以及它发送的实际读/写缓冲区的内存。所有 RDMA 内存必须锁定到物理内存,以便 infiniband/iwarp 硬件可以通过 DMA 安全地访问内存。

一旦达到这一点,您应该至少拥有一个使用 infiniband 机器的功能网络。您应该能够使用上面软件包列表中列出的各种工具来测试 infiniband 网络的基本功能和性能。现在,使用该网络是另一回事;-)

参考: https://people.redhat.com/dledford/infiniband_get_started.html

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值