WEB开发网
开发学院操作系统Linux/Unix 为 AIX 配置 Infiniband 阅读

为 AIX 配置 Infiniband

 2008-11-10 08:28:26 来源:WEB开发网   
核心提示:Infiniband 是一项互连技术,它通过将传统的共享总线体系结构转换到交换光纤体系结构来打破 PCI 总线的带宽和扇出限制,为 AIX 配置 Infiniband,这是一项将服务器、存储设备和网络设备捆绑在一起的交换光纤 I/O 技术,与 PCI 发送数据所采用的并联方式不同,可以转储各种 RDS 结构,使用的命令

Infiniband 是一项互连技术,它通过将传统的共享总线体系结构转换到交换光纤体系结构来打破 PCI 总线的带宽和扇出限制。这是一项将服务器、存储设备和网络设备捆绑在一起的交换光纤 I/O 技术。与 PCI 发送数据所采用的并联方式不同,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

为 AIX 配置 Infiniband

按 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 接口

为 AIX 配置 Infiniband

为下列字段输入值:

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<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] }

其中:

-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 statedown、up、detach:IB 接口的状态。
-M ib_mtu必需的 HCA MTU
-q srq_size发送和接收队列的大小
-Q Q_KEY与多播组相关联的 Q_Key
-k superpacketSuperpacket 功能关或开

请记住以下事项:

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,GROUPRT>
  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 细节)

结束语

您通过使用本文中的信息可以了解如何在 AIX 上配置 Infiniband,以及如何在 Infiniband 上配置和使用 RDS。

Tags:AIX 配置 Infiniband

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接