免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2905 | 回复: 1
打印 上一主题 下一主题

在 IBM POWER 服务器上使用 Infiniband 组建高性能计算集群 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-01-17 14:50 |只看该作者 |倒序浏览
Infiniband 的基本概念

网络是常常被认为是路由器、交换机和插在服务器和存储设备上的电缆的集合。在大部分人的印象里,网络用来连接服务器到其他服务器、存储和其他网络。其实,这是一种普遍存在的对网络的片面看法,它将过多的注意力集中在处于网络底层结构的电缆和交换机上。这是典型的“以网络为中心的”观点:认为网络的构成架构应该决定应用程序的通讯模式。

Infiniband 网络则基于“以应用程序为中心”的新观点。它的提出来源于一个简单的问题:如何让应用程序访问其他应用程序以及存储尽可能的简单、高效和直接?如果以“应用程序为中心”的观点来思考 I/O 问题,就能得到一种与传统完全不同的网络架构。

Infiniband 基于一种非常简单的原则:提供一种易于使用的消息服务。这个服务可以被用来与其他应用程序、进程或者存储进行通信。应用程序不再向操作系统提交访问其他资源的申请,而是直接使用 Infiniband 消息服务。Infiniband 消息服务是一个非常高效、直接的消息服务,它摒弃了传统网络和应用程序之间消息传递的复杂结构。直接使用 Infiniband 服务意味着应用程序不再依赖操作系统来传递消息,这大大提高了通信效率。如图 1,Infiniband 消息服务可以在两个应用程序之间创建一个管道,来使应用程序之间直接进行通信,从而绕过了操作系统,大大提高了效率。


图 1. Infiniband 通信连接原理

                     

Infiniband 在 HPC(High performance computing)领域的应用
高性能计算(HPC)是一个涵盖面很广的领域,它覆盖了从最大的“TOP 500”高性能集群到微型桌面集群。这篇文章里的我们谈及的 HPC 是这样一类系统,它所有的计算能力在一段时间内都被用来解决同一个大型问题。换句话说,我们这里讨论的 HPC 系统不会被用来运行传统的企业应用,例如:邮件、计费、web 等。一些典型的 HPC 应用包括:大气建模、基因研究、汽车碰撞模拟、流体动态分析等。图 2 显示了一个标准的高性能集群(HPC)的拓扑结构。可以看到,在高性能计算集群中,各种设备是通过集群的交换网络连接到一起的。所以,高性能计算系统除了需要高性能的中央处理器外,还需要高性能的存储和低延迟的进程间通信来满足科学运算的需求。在大型集群中高速的交换网络扮演了非常重要的角色,甚至比 CPU 还要关键,处于集群的核心位置。大量的实验数据表明,集群的性能和可扩展性主要和消息在节点之间的传递速度有关,这意味着低延迟的消息传递是被迫切需求的,而这正是 Infiniband 的优势。下面我们就介绍下 Infiniband 为什么比传统网络更适合高性能计算系统。

图 2. 高性能计算集群拓扑


根据我们对高性能计算系统的认识,Infiniband 的低延迟、高带宽和原生的通道架构对于此类系统来说是非常重要的。低延迟的 Infiniband 网络可以在保证性能的前提下,增大集群的规模。通道 I/O 架构则可以提供可扩展的存储带宽性能,并且支持并行文件系统。
说道 HPC 就不能不提 MPI(Message Passing Interface)。MPI 是应用在 HPC 上主要的消息传递中间件标准。虽然 MPI 也可以应用在基于共享内存的系统上,但是,更多的则是被当作通讯层用作连接集群中的不同节点。MPI 通讯服务依赖于底层的提供节点间真正信息传递的消息服务。Infiniband 作为一种底层消息服务为 MPI 层提供了被称为 RDMA(Remote Direct Memory Access)的消息服务。在上面一章,我们讨论了应用程序之间如何通过 Infiniband 通讯架构来实现直接的通讯,从而绕过操作系统。在 HPC 中,我们可以认为 HPC 应用程式调用 MPI 通讯服务,而 MPI 则利用底层的 RDMA 消息服务实现节点间通讯。这就使得,HPC 应用程序具备了不消耗集群 CPU 资源的通讯能力。IBM PE(Parallel Environment)软件作为一种 MPI 标准的实现,加入了对 Infiniband 的支持。本文后面的章节会介绍如何启用 PE 对 Infiniband 的支持。




通过 HMC 为 IBM POWER 服务器配置 Infiniband 适配器
要想使用 Infiniband 高速网络,首先需要对硬件进行配置。IBM Power 服务器提供了对 Infiniband 设备的原生支持,用户可以通过 HMC 进行统一管理。通过虚拟化,用户可以方便的将单个 12 倍速的 Infiniband 端口分配给最多 16 个逻辑分区使用。下面我们就一步步的介绍如何在一个逻辑分区上增加 Infiniband 设备。






    首先点选需要配置 Infiniband 适配器的逻辑分区,在下拉列表中点选 Configuration Manage Profiles

    图 3. 选择逻辑分区


    在新弹出的窗口中选择 Edit:

    图 4. 编辑逻辑分区配置文件


    在 HCA 的标签页面中,选中要分配的 Infiniband 设备,并点击 Configure:

    图 5. 选择 Infiniband 适配器
  • 在新弹出的窗口中,为这个适配器分配一个 GUID index:

    图 6. 配置 Infiniband 设备属性

到此为止,我们就成功的为一个逻辑分区分配了一个新的 Infiniband 适配器。接下来我只需要在 AIX 系统中配置一下,Infiniband 适配器就可以正常使用了。

使用 NIM 安装高性能计算集群上的 AIX 系统
在使用 HMC 配置完 Infiniband 网络设备以后,我们还需要为集群中每台的节点上安装好 AIX 操作系统,由于集群的节点众多,使用网络安装是最常见快速的方法。由于篇幅关系,本文在这里不再讲解如何使用 AIX 再带的网络安装系统(NIM)来自动化的安装 AIX 操作系统。
在 IBM POWER 上配置 IBM Parallel Environment 使用 Infiniband 网络
在安装完集群的系统后,要想让 HPC 应用软件使用 Infiniband 网络,我们还需要安装配置支持 Infiniband 网络的 MPI 通讯软件。IBM Parallel Environment(PE) 是一个针对 HPC 并行程序的开发和运行环境,它提供了对 Infiniband 网络的支持,用户的并行程序可以通过 PE 运行在高速 Infiniband 网络上。IBM PE 由消息传递函数库(如:MPI),并行运行环境(POE),调试工具(PDB)组成。IBM PE 实现了两种通讯库 ----IP(internet protocol) 和 US(user space)。这两种通讯库是对于用户来说是完全透明的,它们使用统一的应用程序编程接口。也就是说使用 IP 协议的程序可以无需修改就运行在 US 模式。US 模式是 PE 专门为 Infiniband 高速网络设计的通讯子库,能最大限度的发挥 Infiniband 网络的优势。从 PE 5.2 版本开始,PE 拥有了无需借助资源管理器(例如:IBM LoadLevler)在 Infiniband 网络上运行 US 任务的能力。下面我们就简单介绍下,如何使用 PE 在 Infiniband 网络上运行 US 模式的任务。
安装 IBM Parallel Environment
在安装 IBM Parallel Environment 以前,请保证集群所有节点之间的 root 用户可以实现免密码的 rsh 自由登陆。然后使用下面的步骤安装 PE:




  • 拷贝 IBM Parallel Environment 软件到一个节点的硬盘,这里我们假设拷贝到 /tmp 目录下
  • 使用 install – a – d /tmp ppe* 命令安装 IBM Parallel Environment 到这个节点
    使用文档编辑器(如:vi)在 /tmp 下创建一个节点列表文件 (host.list),里面包含所有节点名,例如:

    清单 1. 节点列表文件内容
                                      host1  host2  host3
  • 执行 PEinstall /tmp /host命令,IBM Parallel Environment 将会被安装到所有节点列表文件中列出的节点上。
使用 IBM Parallel Environment 在 Infiniband 上进行高性能计算
当使用 PE 来分配计算节点时,你需要先创建一个节点列表文件,就像上一节我们创建的列表文件一样。




  • 如何使用单个 Infiniband 网络适配器: 如果系统中只有一个 IB(Infiniband) 适配器,我们只需要设置如下的环境变量就可以使我们的程序利用 IB 网络进行数据交换:
    MP_EUIDEVICE=sn_single  MP_INSTANCES=max  MP_EUILIB=us
  • 如何使用多个 Infiniband 网络适配器 PE MPI 支持将消息数据条带化的分配到多个 Infiniband 适配器上进行传输,以充分利用通信带宽。如果系统拥有多于一个的 IB 交换网络,资源管理器将从多个适配器上来获取 IB 资源。(一个交换网络是指连接到同一个交换机上的 IB 设备构成的网络。)如果系统只有一个交换网络,PE 将尽量从不同的适配器上获得资源,但是当其中一个适配器上资源不足时,PE 将只从单独的适配器上获得资源。并且,如果其中一个 IB 网络通道出现问题,PE 会自动将通讯转移到其它替换通道上。
    为了激活条带化功能,我们需要设置如下的环境变量:
    MP_EUIDEVICE=sn_all  MP_INSTANCES=max(如果只有一个的 IB 交换网络,无需设置这个环境变量) MP_EUILIB=us

    设置好环境变量后,我们就可以使用 poe 命令,使用 IB 网络提交作业了。


    清单 2. 提交作业
                                      bash-3.2# poe hello – procs 10

    虽然从 PE 5.2 开始,PE 可以脱离 IBM LoadLevler 做简单的资源配置工作,但是,对于大型的 HPC 网络,我们还是建议使用 LoadLevler 来进行作业调度和资源管理。下面一节我们就来介绍如何使用 LoadLevler 配合 PE 利用 Infiniband 网络提交作业。

在 IBM POWER 上配置 IBM LoadLevler 使用 Infiniband 网络
IBM LoadLevler 是一个高性能计算集群上任务管理系统。它可以最大化的利用现有系统中的资源,使用户能在有限的时间内运行尽量多的任务。IBM LoadLevler 可以在动态的环境中安排任务,并提供高效的提交和处理任务的功能。
快速安装 IBM LoadLevler
下面的步骤需要在集群中的所有节点上执行,你可以通过使用 IBM xCat 中的 xdsh 命令来同步执行下面的步骤,具体的方法请参考 xCat 的使用手册。






    在安装 IBM LoadLevler 前,需要在集群系统的所有节点上建立一个 loadl 用户。

    清单 3. 创建 loadl 用户示例
                                      bash-3.2# mkgroup -a loadl  bash-3.2# mkuser pgrp=loadl groups=loadl home=/u/loadl loadl  bash-3.2# lsuser loadl  loadl id=1018 pgrp=users groups=loadl home=/u/loadl shell=/bin/bash gecos=loadl  login=true su=true rlogin=true

    拷贝 IBM LoadLevler 软件包到指定目录,这里我们假设拷贝到 /tmp目录下。可以使用下面的命令安装软件包,或者使用 SMIT 工具:

    清单 4. 安装 loadlevler
                                      installp -Y -X -d device LoadL.resmgr.full LoadL.scheduler.full  installp -X -B -d device LoadL.resmgr.full LoadL.scheduler.full

    初始化 LoadLevler 配置:

    清单 5. 初始化 LoadLevler
                                      bash-3.2# su - loadl  bash-3.2# cd /usr/lpp/LoadL/scheduler/full/bin  bash-3.2# ./llinit -local /var/loadl -release /usr/lpp/LoadL/full \       -cm < 管理节点 hostname>

    在 LoadL 里不需要对 Infiniband 网卡做专门的配置,LoadL 会自动从系统中获得所有网络适配器的信息。
  • 检查在 LoadL 的 LoadL_admin 文件中定义的集群节点,将他们设置到 pool_list=1

    清单 6. LoadL_admin 文件
                                     … Hostname1: type = machine         central_manager = true         pool_list = 1  hostname2: type = machine         pool_list = 1  hostname2: type = machine         pool_list = 1  hostname2: type = machine         pool_list = 1

使用 LoadL 运行高性能计算程序
使用 LoadL 来自动分配计算资源,可以借助 LoadL 强大的调度功能,提高高性能集群系统的资源利用率,关于如何使用 LoadL 来做任务调度请参考相关的 LoadL 的管理文档,本文不做进一步的介绍。要使用 LoadL 来做资源管理器,需要设置 MP_RMPOOLMP_RESD环境变量,根据上文,我们在 LoadL 配置文件中将系统的资源都设置到 pool_list1中,这里我只需要使用命令:

清单 7. 设置 MP_RMPOOL 和 MP_RESD:
                                  bash-3.2#export MP_RMPOOL=1  bash-3.2#export MP_RESD=yes

另外,我们仍然需要设置 MP_EUIDEVICE、MP_INSTANCES、MP_EUILIB,设置方法和第四章的方法相同
设置好环境变量后,我们就可以使用 poe命令,通过 IB 网络提交作业了。

清单 8. 提交作业
                                  bash-3.2# poe hello – procs 10

小结
本文介绍了为什么新一代的高性能计算集群要使用 Infiniband 高速网络。以及如何从头一步步的配置 IBM POWER 服务器上的 Infiniband 设备,并使用 IBM 的高性能计算软件 LoadLevler 和 PE 充分利用 Infiniband 的优势进行科学计算。由于篇幅关系,本文并没有介绍如何安装 Infiniband 硬件和如何安装系统,请读者阅读参考文献中的相关文档。

作者简介
罗明是一名IBM中国软件开发中心的软件工程师。从事多年 IBM 集群管理软件 CSM 的开发和测试工作,对高性能集群系统和 IBM POWER 系列产品拥有丰富的管理经验。目前,他负责易于管理的高性能计算组合软件包的开发工作,致力于提高高性能集群的易用性。

卜俊辉,IBM 中国软件开发中心 HPC 部门的软件工程师,主要从事集群系统管理软件的相关研发工作。



论坛徽章:
0
2 [报告]
发表于 2012-01-17 16:53 |只看该作者
你让BBJ情何以堪?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP