为 AIX 配置 Infiniband.docx
《为 AIX 配置 Infiniband.docx》由会员分享,可在线阅读,更多相关《为 AIX 配置 Infiniband.docx(7页珍藏版)》请在冰豆网上搜索。
![为 AIX 配置 Infiniband.docx](https://file1.bdocx.com/fileroot1/2023-1/6/c828a577-f1ef-4de8-9187-9d3bec0ef9fb/c828a577-f1ef-4de8-9187-9d3bec0ef9fb1.gif)
为AIX配置Infiniband
为AIX配置Infiniband
PujaLeekha (puleekha@),经理-RegressionandIntegratedFVT,AIX印度,IBM
简介:
Infiniband是一项互连技术,它通过将传统的共享总线体系结构转换到交换光纤体系结构来打破PCI总线的带宽和扇出限制。
这是一项将服务器、存储设备和网络设备捆绑在一起的交换光纤I/O技术。
与PCI发送数据所采用的并联方式不同,Infiniband以串联方式发送数据,并且通过多路复用信号可以同时承载多个通道。
IBM®AIX®610支持Infiniband硬件和在Infiniband上运行的多种协议。
本文介绍如何配置Infiniband和在AIX上设置IPoverInfiniband接口(IpoIB)。
本文还说明了如何使用可靠数据报套接字(ReliableDatagramSockets,RDS),该协议与UDP类似,设计用于在Infiniband上使用套接字来发送和接收数据。
配置Infiniband
通过使用IPoverIB(IPoIB),可以在Infiniband(IB)网络接口上发送Internet协议(IP)数据包。
IPoIB将IP数据包封装到IB数据包中,并通过IB接口发送。
为了使用IPoIB,您必须在系统中安装和配置ICM(InfinibandCommunicationManager)驱动程序和至少一个IB设备。
需要执行下列步骤以配置IB设备,然后使用ICM配置IPoIB。
1.在配置Infiniband之前,您需要检查在您的AIX主机上是否配置了IB设备(例如,InfinibandHCA-Infiniband主通道适配器)并且其处于“可用(Available)”状态。
若要检查状态,请执行以下命令:
#lsdev-Ccadapter|grep"hostchannel"
iba0AvailableInfiniBandhostchanneladapter
或者
#lsdev-Ccadapter|grep"HCA"
iba0
Available01-00PCIEDualPortHCA(b3157862)
2.配置ICM(InfinibandCommunicationManager)。
若要配置ICM,请执行下列步骤:
smiticm->AddanInfinibandCommunicationManager->AddanInfinibandCommunicationManager->选择 ICM(为“NameofIBCommunicationmanagertoAdd”),随后将看到如图1所示的屏幕。
图1.配置ICM
按 Enter 为各个字段使用缺省值。
下个屏幕将显示“Command:
OK”和“icmAvailable”。
ICM配置已完成。
若要检查ICM是否已配置完成,请执行以下命令:
#lsdev-licm
icmAvailableInfinibandCommunicationManager
3.配置Infiniband网络接口。
可以使用命令行接口或SMIT用户界面来配置IB接口。
若要使用SMIT配置IB接口,请执行下列步骤:
smitinet->Change/ShowCharacteristicsofaNetworkinterface->选择ib0(IPoverInfinibandNetworkInterface)。
您将看到如图2所示的屏幕。
图2.配置IB接口
为下列字段输入值:
oInternetAddress(例如,1.2.3.92)
oNetworkmask(例如,255.255.255.0)
oHCAadapter(我们在步骤1中配置的iba0)
oAdpater’sportnumber。
有两个端口:
端口1和端口2。
使用命令 ibstat 检查哪个端口处于“活动(Active)”状态。
如果两个端口都是活动的,则根据您的网络配置选择希望使用的端口。
oCurrentstate–up
在其余字段使用缺省值。
下个屏幕将显示“Command:
OK”和“ib0changed”。
IB接口配置已完成。
若要检查IB接口状态,请运行 ifconfig 命令。
#ifconfigib0
ib0:
flags=e3a0063
inet1.2.3.92netmask0xffffff00broadcast1.2.3.255
tcp_sendspace131072tcp_recvspace131072rfc13231
使用命令行接口配置IB接口。
步骤1和步骤2与上例相同。
对于步骤3,请执行下列命令:
#/usr/sbin/mkiba-a1.2.3.92-iib0-Aiba0-p2-P0xFFFF-Sup
-m255.255.255.0-M2044ib0changed
mkiba 命令的语法如下:
/usr/bin/mkiba{-aaddress-iinterface-Aib_adapter-pib_port[-PP_KEY]
[-msubnet_mask]
[-Sstate][-Mmtu][-qqueue_pair_size][-QQ_KEY][-ksuperpacket]}
其中:
-aaddress
由–i指定的接口的IP地址(必须采用以点分隔的十进制表示法)
-iinterface
与-aIP地址相关联的接口
-Aib_adapter
与接口相关联的IB适配器
-pib_port
与IB适配器关联的IB端口。
(缺省值为1)
-Pp_key
与IB端口相关联的分区键。
键(请注意,分区键在配置后即无法更改。
在进行配置之前,用户必须从网络管理员处获得分区键)。
-msubnet_mask
子网掩码(点分十进制或0x表示法)
-Sstate
down、up、detach:
IB接口的状态。
-Mib_mtu
必需的HCAMTU
-qsrq_size
发送和接收队列的大小
-QQ_KEY
与多播组相关联的Q_Key
-ksuperpacket
Superpacket功能关或开
请记住以下事项:
∙Superpacket的–k选项在AIX61B和53N以上的版本中可用,较低的版本不包含superpacket功能。
同样,当启用此功能时,可以显著地提高性能。
它允许TCP/IP向接口发送64KB数据报,其可以提高性能。
请注意,该功能在AIX中仅在AIX主机到AIX主机的情况下受支持,前提是两个主机上的接口都启用此功能。
∙HCAMTU大小的–M选项。
在交换机和适配器支持的情况下,AIX支持4K物理MTU。
接口首次要求用户在交换机中创建广播多播组。
如果组不存在,则始终缺省创建2K多播组。
因此,如果您拥有支持4K物理MTU的适配器和交换机,并且您没有在交换机中创建广播组,则接口将创建2K多播组,从而使MTU降低到2K。
运行 ifconfig 以检查IB接口状态。
#ifconfigib0
ib0:
flags=e3a0063
inet1.2.3.92netmask0xffffff00broadcast1.2.3.255
tcp_sendspace131072tcp_recvspace131072rfc13231
工作已完成!
IB接口已配置完毕。
若要验证是否一切工作正常,请使用上述步骤配置两个节点,并在两个节点之间运行ping命令。
如果ping成功,则IB配置正确。
回页首
配置RDS
RDS使用IB网络接口进行通信。
因而,应当配置IpoIB和IB网络接口以使用RDS协议。
在您希望使用RDS进行通信的系统上加载RDS驱动程序之前,请检查这些系统上的IB网络接口是否能够彼此ping通。
加载RDS
运行下列命令以加载RDS:
#bypassctrlloadrds
如果您接收到错误消息 Execformaterror..,则表示未配置IB接口。
请参阅配置Infiniband 并配置IB接口,然后尝试使用 bypassctrl 命令加载RDS。
如果已加载了RDS,将显示错误消息 /usr/lib/drivers/rdsalreadyloaded。
若要检查RDS驱动程序是否已成功加载,请运行下列命令:
#genkex|greprds
47e100053770/usr/lib/drivers/rds
如果创建了套接字以使用RDS协议并返回错误 socket:
Addrfamilynotsupportedbyprotocol,则未加载RDS驱动程序,并且您需要加载它。
同样,请注意在重新启动时,RDS驱动程序将被卸载,因此在每次重新启动后需要使用 bypassctrl 实用工具重新加载它。
回页首
rdsctrl实用工具
加载RDS后,使用 rdsctrl (/usr/sbin/rdsctrl)实用工具获取用于修改可调节参数和用于诊断的RDS统计数据。
#rdsctrlstats 命令显示各种RDS统计数据。
可以使用以下命令重置统计数据:
#rdsctrlstatsreset .
优化参数
在加载RDS后和运行任何RDS应用程序之前,可以优化下列RDS参数。
若要设置任何参数,请使用语法:
#rdsctrlset=
∙rds_sendspace 参数引用基于流的发送缓冲区的高水位标记(high-watermark)。
(每个套接字可能有多个流。
)
缺省值为524288字节(512KB)。
使用以下命令设置该值:
#rdsctrlsetrds_sendspace=
∙rds_recvspace 引用基于套接字的接收缓冲区的基于流的高水位标记(per-flowhigh-watermark)。
对于该套接字的每个附加流,该值将提高接收高水位标记。
缺省值为524288字节(512KB)。
使用以下命令设置该值:
#rdsctrlsetrds_recvspace=
为了实现好的RDS流性能,rds_sendspace 和 rds_recvspace 参数的值必须至少设置为最大RDSsendmsg大小的四倍。
RDS为接收的每四条消息发送一个ACK,如果 rds_recvspace 没有设置为消息大小的4倍以上,那么吞吐量将非常低。
∙rds_mclustsize 引用各个内存集群的大小,它也是消息片段的大小。
缺省大小为16384字节(16KB)。
使用以下命令设置该值(通常为4096的倍数):
#rdsctrlsetrds_mclustsize=
rds_mclustsize 值在集群中的所有计算机(节点)上必须相同。
更改该值也会影响性能。
可以使用以下命令获取为可调节参数设置的当前值:
#rdsctrlget
如果在没有任何可调节参数的情况下运行该命令,则给出可调节参数的完整列表。
#rdsctrlget 提供可调节参数的列表并包含其当前值。
#rdsctrlget
rds_conn_block_limit=100
rds_acksz=180
rds_txqsz=1024
rds_rxqsz=1024
rds_mclustsize=16384
rds_recvspace=524288
rds_sendspace=524288
数据结构转储
为了排除故障,可以转储各种RDS结构。
使用的命令为 #rdsctrldump
可以是以下任意值:
∙IBC(IB可靠连接细节)
∙sendcb(流细节)
∙Pcb(RDS套接字PCB细节)