Chinaunix首页 | 论坛 | 博客
  • 博客访问: 100263
  • 博文数量: 26
  • 博客积分: 290
  • 博客等级: 二等列兵
  • 技术积分: 274
  • 用 户 组: 普通用户
  • 注册时间: 2011-12-08 00:49
文章分类

全部博文(26)

文章存档

2013年(2)

2012年(19)

2011年(5)

我的朋友

分类: 系统运维

2012-06-05 09:23:50

InfiniBand 是一项互连技术,它通过将传统的共享总线体系结构转换到交换光纤体系结构来打破 PCI 总线的带宽和扇出限制。这是一项将服务器、存储设备和网络设备捆绑在一起的交换光纤 I/O 技术。与 PCI 发送数据所采用的并联方式不同,InfiniBand 以串联方式发送数据,并且通过多路复用信号可以同时承载多个通道。

  IBM AIX 610 支持 InfiniBand 硬件和在 InfiniBand 上运行的多种协议。本文介绍如何配置 InfiniBand 和在 AIX 上设置 IP over InfiniBand 接口 (IpoIB)。本文还说明了如何使用可靠数据报套接字(Reliable Datagram SocketsRDS),该协议与 UDP 类似,设计用于在 InfiniBand 上使用套接字来发送和接收数据。

  配置 InfiniBand

  通过使用 IP over IB (IPoIB),可以在 InfiniBand (IB) 网络接口上发送 Internet 协议 (IP) 数据包。IPoIB IP 数据包封装到 IB 数据包中,并通过 IB 接口发送。为了使用 IPoIB,您必须在系统中安装和配置 ICMInfiniBand 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 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 state

downupdetachIB 接口的状态。

-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 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 =

  RDS sendspace参数引用基于流的发送缓冲区的高水位标记 (high-water mark)。(每个套接字可能有多个流。)

  缺省值为 524288 字节 (512KB)。使用以下命令设置该值:

   # RDSctrl set RDSsendspace=

  RDSrecvspace引用基于套接字的接收缓冲区的基于流的高水位标记 (per-flow high-water mark)。对于该套接字的每个附加流,该值将提高接收高水位标记。

  缺省值为 524288 字节 (512 KB)。使用以下命令设置该值:

  # RDSctrl set RDS_recvspace=

  为了实现好的 RDS 流性能,RDS_sendspace RDS_recvspace参数的值必须至少设置为最大 RDS sendmsg 大小的四倍。RDS 为接收的每四条消息发送一个 ACK,如果 RDSrecvspace没有设置为消息大小的 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 RDSmclustsize = 16384 RDS_recvspace = 524288 RDS_sendspace = 524288

  数据结构转储

  为了排除故障,可以转储各种 RDS 结构。使用的命令为 # RDSctrl dump

  可以是以下任意值:

  IBCIB 可靠连接细节)

  sendcb(流细节)

  PcbRDS 套接字 PCB 细节)

  结束语

  您通过使用本文中的信息可以了解如何在 AIX 上配置 InfiniBand,以及如何在 InfiniBand 上配置和使用 RDS。您了解了用于配置 RDS 的命令;为了进一步了解 RDS 协议,请参考参考资料部分以获取其他信息。

 

 

阅读(1845) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~