为 AIX 配置 Infiniband

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

为AIX 配置Infiniband
Puja Leekha (puleekha@), 经理- Regression and Integrated FVT,AIX 印度, IBM
简介: 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。

1.在配置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)
2.配置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
3.配置Infiniband 网络接口。

可以使用命令行接口或SMIT 用户
界面来配置IB 接口。

若要使用SMIT 配置IB 接口,请执行下列步骤:
smit inet -> Change / Show Characteristics of a Network
interface ->选择ib0 (IP over Infiniband Network Interface)。

您将看到如图2 所示的屏幕。

图 2.配置IB 接口
为下列字段输入值:
o Internet Address(例如,1.2.3.92)
o Network mask(例如,255.255.255.0)
o HCA adapter(我们在步骤1 中配置的iba0)
o Adpater’s port numb er。

有两个端口:端口 1 和端口2。

使用命令ibstat检查哪个端口处于“活动(Active)”状态。

如果两个端口都是活动的,则根据您的网络配置选择希望
使用的端口。

o Current state – up
在其余字段使用缺省值。

下个屏幕将显示“Command:OK”和“ib0 changed”。

IB 接口配置已
完成。

若要检查IB 接口状态,请运行ifconfig命令。

# ifconfig ib0
ib0:
flags=e3a0063<UP,BROADCAST,NOTRAILERS,RUNNING,ALLCAST,MULTICAST,GROUPRT> inet 1.2.3.92 netmask 0xffffff00 broadcast 1.2.3.255
tcp_sendspace 131072 tcp_recvspace 131072 rfc1323 1
使用命令行接口配置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] }
其中:
请记住以下事项:
∙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<UP,BROADCAST,NOTRAILERS,RUNNING,ALLCAST,MULTICAST,GROUP RT>
inet 1.2.3.92 netmask 0xffffff00 broadcast 1.2.3.255
tcp_sendspace 131072 tcp_recvspace 131072 rfc1323 1
工作已完成!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 <tunable parameter>=<value to be set>
∙rds_sendspace参数引用基于流的发送缓冲区的高水位标记(high-water mark)。

(每个套接字可能有多个流。


缺省值为524288 字节(512KB)。

使用以下命令设置该值:
# rdsctrl set rds_sendspace=<value in bytes>
∙rds_recvspace引用基于套接字的接收缓冲区的基于流的高水位标记(per-flow high-water mark)。

对于该套接字的每个附加流,该值将提高接收高水位标记。

缺省值为524288 字节(512 KB)。

使用以下命令设置该值:
# rdsctrl set rds_recvspace=<value in bytes>
为了实现好的RDS 流性能,rds_sendspace和rds_recvspace参数的值必须至少设置为最大RDS sendmsg 大小的四倍。

RDS 为接收的每四条消息发送一个ACK,如果rds_recvspace没有设置为消息大小的4 倍以上,那么吞吐量将非常低。

∙rds_mclustsize引用各个内存集群的大小,它也是消息片段的大小。

缺省大小为16384 字节(16KB)。

使用以下命令设置该值(通常
为4096 的倍数):# rdsctrl set rds_mclustsize=<multiple of 4096, in bytes>
rds_mclustsize值在集群中的所有计算机(节点)上必须相同。


改该值也会影响性能。

可以使用以下命令获取为可调节参数设置的当前值:
# rdsctrl get <tunable parameter>
如果在没有任何可调节参数的情况下运行该命令,则给出可调节参数的完整列表。

# 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 <structure>
<structure>可以是以下任意值:
∙IBC(IB 可靠连接细节)
∙sendcb(流细节)
∙Pcb(RDS 套接字PCB 细节)。

相关文档
最新文档