扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
Infiniband 是一项互连技术,它通过将传统的共享总线体系结构转换到交换光纤体系结构来打破 PCI 总线的带宽和扇出限制。这是一项将服务器、存储设备和网络设备捆绑在一起的交换光纤 I/O 技术。与 PCI 发送数据所采用的并联方式不同,Infiniband 以串联方式发送数据,并且通过多路复用信号可以同时承载多个通道。
IBM AIX 610 支持 Infiniband 硬件和在 Infiniband 上运行的多种协议。本文介绍如何配置 Infiniband 和在 AIX 上设置 IP over Infiniband 接口 (IpoIB)。本文还说明了如何使用可靠数据报套接字(Reliable Datagram Sockets,RDS),该协议与 UDP 类似,设计用于在 Infiniband 上使用套接字来发送和接收数据。
配置 Infiniband
通过使用 IP over IB (IPoIB),可以在 Infiniband (IB) 网络接口上发送 Internet 协议 (IP) 数据包。IPoIB 将 IP 数据包封装到 IB 数据包中,并通过 IB 接口发送。为了使用 IPoIB,您必须在系统中安装和配置 ICM(Infiniband Communication Manager)驱动程序和至少一个 IB 设备。需要执行下列步骤以配置 IB 设备,然后使用 ICM 配置 IPoIB。
在配置 Infiniband 之前,您需要检查在您的 AIX 主机上是否配置了 IB 设备(例如,Infiniband HCA - Infiniband 主通道适配器)并且其处于“可用 (Available)”状态。若要检查状态,请执行以下命令:
# lsdev -Cc adapter | grep "host channel" iba0 Available InfiniBand host channel adapter
或者
# lsdev -Cc adapter | grep "HCA" iba0 Available 01-00 PCIE Dual Port HCA (b3157862)
配置 ICM (Infiniband Communication Manager)。若要配置 ICM,请执行下列步骤:
smit icm -> Add an Infiniband Communication Manager -> Add an Infiniband Communication Manager -> 选择 ICM(为“Name of IB Communication manager to Add”),随后将看到如图 1 所示的屏幕。
图 1. 配置 ICM
按 Enter为各个字段使用缺省值。下个屏幕将显示“Command:OK”和“icm Available”。ICM 配置已完成。
若要检查 ICM 是否已配置完成,请执行以下命令:
# lsdev -l icm icm Available Infiniband Communication Manager
配置 Infiniband 网络接口。可以使用命令行接口或 SMIT 用户界面来配置 IB 接口。
若要使用 SMIT 配置 IB 接口,请执行下列步骤:
smit inet -> Change / Show Characteristics of a Network interface -> 选择 ib0 (IP over Infiniband Network Interface)。您将看到如图 2 所示的屏幕。
图 2.配置 IB 接口
为下列字段输入值:
Internet Address(例如,1.2.3.92)
Network mask(例如,255.255.255.0)
HCA adapter(我们在步骤 1 中配置的 iba0)
Adpater’s port number。有两个端口:端口 1 和端口 2。使用命令 ibstat检查哪个端口处于“活动 (Active)”状态。如果两个端口都是活动的,则根据您的网络配置选择希望使用的端口。
Current state – up
在其余字段使用缺省值。
下个屏幕将显示“Command:OK”和“ib0 changed”。IB 接口配置已完成。
若要检查 IB 接口状态,请运行 ifconfig命令。
# ifconfig ib0 ib0: flags=e3a0063
使用命令行接口配置 IB 接口。
步骤 1 和步骤 2 与上例相同。对于步骤 3,请执行下列命令:
# /usr/sbin/mkiba -a 1.2.3.92 -i ib0 -A iba0 -p 2 -P 0xFFFF -S up -m 255.255.255.0 -M 2044 ib0 changed
mkiba命令的语法如下:
/usr/bin/mkiba {-a address -i interface -A ib_adapter -p ib_port [-P P_KEY] [-m subnet_mask] [-S state] [ -M mtu ] [ -q queue_pair_size ] [ -Q Q_KEY ] [-k superpacket] }
其中:
-a address | 由 –i 指定的接口的 IP 地址(必须采用以点分隔的十进制表示法) |
-i interface | 与 -a IP 地址相关联的接口 |
-A ib_adapter | 与接口相关联的 IB 适配器 |
-p ib_port | 与 IB 适配器关联的 IB 端口。(缺省值为 1) |
-P p_key | 与 IB 端口相关联的分区键。键(请注意,分区键在配置后即无法更改。在进行配置之前,用户必须从网络管理员处获得分区键)。 |
-m subnet_mask | 子网掩码(点分十进制或 0x 表示法) |
-S state | down、up、detach:IB 接口的状态。 |
-M ib_mtu | 必需的 HCA MTU |
-q srq_size | 发送和接收队列的大小 |
-Q Q_KEY | 与多播组相关联的 Q_Key |
-k superpacket | Superpacket 功能关或开 |
请记住以下事项:
Superpacket 的 –k 选项在 AIX 61B 和 53N 以上的版本中可用,较低的版本不包含 superpacket 功能。同样,当启用此功能时,可以显著地提高性能。它允许 TCP/IP 向接口发送 64KB 数据报,其可以提高性能。请注意,该功能在 AIX 中仅在 AIX 主机到 AIX 主机的情况下受支持,前提是两个主机上的接口都启用此功能。
HCA MTU 大小的 –M 选项。在交换机和适配器支持的情况下,AIX 支持 4K 物理 MTU。接口首次要求用户在交换机中创建广播多播组。如果组不存在,则始终缺省创建 2K 多播组。因此,如果您拥有支持 4K 物理 MTU 的适配器和交换机,并且您没有在交换机中创建广播组,则接口将创建 2K 多播组,从而使 MTU 降低到 2K。
运行 ifconfig以检查 IB 接口状态。
# ifconfig ib0 ib0: flags=e3a0063
工作已完成!IB 接口已配置完毕。
若要验证是否一切工作正常,请使用上述步骤配置两个节点,并在两个节点之间运行 ping 命令。如果 ping 成功,则 IB 配置正确。
配置 RDS
RDS 使用 IB 网络接口进行通信。因而,应当配置 IpoIB 和 IB 网络接口以使用 RDS 协议。
在您希望使用 RDS 进行通信的系统上加载 RDS 驱动程序之前,请检查这些系统上的 IB 网络接口是否能够彼此 ping 通。
加载 RDS
运行下列命令以加载 RDS:
# bypassctrl load rds
如果您接收到错误消息 Exec format error ..,则表示未配置 IB 接口。请参阅配置 Infiniband并配置 IB 接口,然后尝试使用 bypassctrl命令加载 RDS。
如果已加载了 RDS,将显示错误消息 /usr/lib/drivers/rds already loaded。
若要检查 RDS 驱动程序是否已成功加载,请运行下列命令:
# genkex | grep rds 47e1000 53770 /usr/lib/drivers/rds
如果创建了套接字以使用 RDS 协议并返回错误 socket: Addr family not supported by protocol,则未加载 RDS 驱动程序,并且您需要加载它。同样,请注意在重新启动时,RDS 驱动程序将被卸载,因此在每次重新启动后需要使用 bypassctrl实用工具重新加载它。
rdsctrl 实用工具
加载 RDS 后,使用 rdsctrl(/usr/sbin/rdsctrl) 实用工具获取用于修改可调节参数和用于诊断的 RDS 统计数据。
# rdsctrl stats命令显示各种 RDS 统计数据。
可以使用以下命令重置统计数据:
# rdsctrl stats reset.
优化参数
在加载 RDS 后和运行任何 RDS 应用程序之前,可以优化下列 RDS 参数。若要设置任何参数,请使用语法:
# rdsctrl set
rds_sendspace参数引用基于流的发送缓冲区的高水位标记 (high-water mark)。(每个套接字可能有多个流。)
缺省值为 524288 字节 (512KB)。使用以下命令设置该值:
# rdsctrl set rds_sendspace=
rds_recvspace引用基于套接字的接收缓冲区的基于流的高水位标记 (per-flow high-water mark)。对于该套接字的每个附加流,该值将提高接收高水位标记。
缺省值为 524288 字节 (512 KB)。使用以下命令设置该值:
# rdsctrl set rds_recvspace=
为了实现好的 RDS 流性能,rds_sendspace和 rds_recvspace参数的值必须至少设置为最大 RDS sendmsg 大小的四倍。RDS 为接收的每四条消息发送一个 ACK,如果 rds_recvspace没有设置为消息大小的 4 倍以上,那么吞吐量将非常低。
rds_mclustsize引用各个内存集群的大小,它也是消息片段的大小。缺省大小为 16384 字节 (16KB)。使用以下命令设置该值(通常为 4096 的倍数): # rdsctrl set rds_mclustsize=
rds_mclustsize值在集群中的所有计算机(节点)上必须相同。更改该值也会影响性能。
可以使用以下命令获取为可调节参数设置的当前值:
# rdsctrl get
如果在没有任何可调节参数的情况下运行该命令,则给出可调节参数的完整列表。
# rdsctrl get提供可调节参数的列表并包含其当前值。
# rdsctrl get rds_conn_block_limit = 100 rds_acksz = 180 rds_txqsz = 1024 rds_rxqsz = 1024 rds_mclustsize = 16384 rds_recvspace = 524288 rds_sendspace = 524288
数据结构转储
为了排除故障,可以转储各种 RDS 结构。使用的命令为 # rdsctrl dump
IBC(IB 可靠连接细节)
sendcb(流细节)
Pcb(RDS 套接字 PCB 细节)
结束语
您通过使用本文中的信息可以了解如何在 AIX 上配置 Infiniband,以及如何在 Infiniband 上配置和使用 RDS。您了解了用于配置 RDS 的命令;为了进一步了解 RDS 协议,请参考参考资料部分以获取其他信息。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者