APP下载

分布式独立内存简易高性能计算集群搭建测试与应用

2018-12-10◆韩

网络安全技术与应用 2018年12期
关键词:高性能集群计算机

◆韩 菲 李 炜



分布式独立内存简易高性能计算集群搭建测试与应用

◆韩 菲1李 炜2

(1.联想(北京)有限公司 北京 100094;2.联想(北京)信息技术有限公司 北京 100094)

高性能计算技术对地震勘探的影响非常巨大,高性能计算集群为地震数据处理提供了越来越高的硬件保障。本文提出一种基于Linux系统的小型高性能计算集群的构建方案,并结合三维地震数据进行叠前偏移计算,对集群浮点运算性能进行分析测试。结果表明,此架构能够有效解决大规模并行计算问题,提高计算速度并且降低计算成本。

高性能计算;计算效率;集群搭建

0 引言

随着计算机的广泛应用和性能的大幅度提高,计算机处理问题的规模也越来越大。尤其在地震勘探领域中,快速处理大规模地震数据的要求与日俱增[1]。地震勘探方法是目前使用最为广泛、解决油气勘探问题最为有效的地球物理方法。该原理是利用人工方法引起地壳震动,再用精密仪器按一定的观测方式记录爆炸后地面上各接收点的振动信息,通过分析和处理这些大量数据推断地下的地质构造。该方法收集到的数据都达到TB级别,海洋探测的数据量更是以PB级别为单位。高性能计算机若在短时间内完成对这种数据的分析,需要具有惊人的计算能力[2]。因此,计算机的高性能计算能力在地震勘探领域中的地位举足轻重,提高计算机的并行处理能力和浮点运算能力势在必行。目前,单个处理器的计算性能可提升的空间有限。将一组高性能计算机连接起来组成具有并行结构的高性能集群,实现高效并行计算,是满足科学和工程计算问题中高性能数据处理要求的一种有效途径。

计算机集群是指多台同构或异构的计算机用某种方式连接起来,协同完成特定的任务计算机系统。目前计算机集群技术按照使用目的可分为三类:高可用集群(High Availability Cluster)、负载均衡集群(Load Balance Cluster)、科学计算集群(High Performance Computing Cluster)。高可用集群,利用集群管理软件,当主服务器出现故障时,备份服务器能够自动接管主服务器的工作,并及时切换过去,以实现对用户的不间断服务;负载均衡集群,负载压力根据某种算法合理分配到集群中的每一台计算机上,以减轻主服务器的压力,降低对主服务器的硬件和软件要求[3]。科学计算集群,即充分利用集群中的每一台计算机的资源,实现复杂运算的并行处理,通常用于科学计算领域。集群所用计算机可以是工作站或者普通PC机。针对地震资料处理的高吞吐量、高计算量等特点,本文提出了使用linux PC机构建小型高性能计算集群,用来解决大型地震数据处理问题的解决方案。

1 基于Linux简易集群搭建

集群是由一组独立的计算机系统构成的一个松耦合的多处理器系统,通过网络技术将一组工作站或PC机连接起来,计算机之间高度紧密地协同工作,像一个单独集成的计算资源运行一组共用的应用程序,为用户和应用程序提供类似单机系统的功能。

1.1 集群基本概念

(1)节点

在高性能计算集群中,主要功能节点有管理节点、计算节点、存储节点。集群中的每台计算机都是集群节点(node)。管理节点一般兼具登录节点的功能,成为高性能集群的入口,作为集群中心的“核心”领导者,控制其他计算机,管理和监控各个节点的系统状态和网络状态,为其他计算机分配计算任务,调度负载,安装计算节点所需软件,一般称为集群的主节点[4]。

计算节点是整个集群系统的重要组成部分,执行并行计算任务。单个计算节点CPU主频越高,内存越大,总线带宽越高,对计算效率的提高越有利。因此在选择硬件的架构方式时,硬件的参数也考虑到其中。

存储节点一般也兼具I/O节点功能,连接到外部磁盘阵列,形成网络存储,存储大量地震数据。存储基本模式分有NAS(Network Attached Storage),SAN(Storage Area Network and SAN Protocols)。NAS被定义为一种专用数据存储服务器,磁盘阵列,和内嵌系统软件,可提供跨平台文件共享功能,并且方便配置,有效降低总拥有成本,保护不必要的存储投资。架构方式如图1。

图1 NAS网络存储基本架构

SAN存储区域网络,是一种高速网络。提供在计算机与存储系统之间的数据传输。当前常见的可使用SAN技术,如Lenovo的光纤存储,或者说是一种更新的光纤信道技术[5]。SCSI和ISCSI在存储区域网络中也运用高速以太网协议,目前是两种广泛的存储区域网络协议。架构方式如图2,图2中蓝色线表示存储使用光纤网络技术连接。

图2 SAN网络存储基本架构

(2)节点间通信

集群中计算节点需要通过远程通信协议来完成任务的接受和执行,ssh和rsh是目前最为流行的两种远程通信协议。本集群建立节点无密码ssh访问实现节点间通信技术,为的是让节点与节点之间是更高效的更快速紧密的进行通讯。ssh是secure shell的缩写,是建立在应用层和传输层基础上的安全协议,起作用是提供安全快捷的远程管理服务[6]。在计算机集群中,每个节点都需要分担一定的任务,而这些任务都是有执行任务的主节点发起的。集群网络中MPICH的通信,其余节点通过远程通信协议来完成任务的接收和执行。

(3)文件共享

集群系统需要共享各种数据文件,并行编程环境,处理地震数据,使用常用软件和地球物理软件。选用NFS,将这些文件在同一个路径下共享,其他所有计算机可以对这些共享文件运行和读写。NFS(Network File System)即网络文件系统,是一种在网络上的机器间共享文件的方法[7],文件如同客户的本地磁盘驱动器上一样。NFS构建一个单一映像系统,如采用NFS将管理节点的文件系统挂载到本地文件系统中,只需在管理节点/etc/export文件中加入需要共享的目录,目录下安装一次所需软件,其他计算机都可共享使用。

(4)并行编程环境

本集群并行编程环境采用消息传递接口MPI(message passing interface)。不同编程模型对应不同的编程环境。MPI是一个库,一种规范,是目前最流行的分布存储并行编程环境。MPI已经和fortran语言、C语言、C++语言绑定,它有较高的通信性能,很好的可移植性和强大的功能。目前MPICH已经发展到2.0版本,它包括200多个函数,功能强大。

(5)作业管理系统

作业管理系统提供对批量作业的定义、提交、调度、执行、监控机制,有软件管理机制和系统管理机制。系统管理机制使用Linux操作系统的top、netstat等系统监测命令,如地震数据处理软件cgg软件中的scp模块功能,它能反映出系统使用状态、使用率、I/O等待情况、用户使用情况。从而更加有效地利用系统资源,平衡网络负载和提高系统整体性能,最终应用在大型高性能集群系统上[8]。使系统或用户提交的作业以批处理的方式进行地震数据的计算处理。

1.2 集群硬件环境搭建

硬件是整个集群系统的物理基础,硬件的选择主要取决于用户对集群的功能、性能以及价格等因素要求。在开始搭建Linux高性能计算集群之前,先了解一下硬件环境,硬件与操作系统的关系也很大。

集群由多台同构或异构的计算机通过某种方式连接起来。Message Passing Interface,MPI,消息传递接口,可以实现节点与节点之间的通信,但会带来没有必要的额外资源开销。分布式内存系统会迫使您考虑数据分割问题,因为每一个获取远程数据的消息都会产生一个严重的延迟。通过增加节点的方式增加CPU的数量,分布式内存的系统提供了很好的可扩展性。本文搭建的分布式独立内存集群,含一个管理节点与一组同构计算节点,通过网络相连的构建集群。每个节点具有独立的内存,并且互补占用资源。

在该集群方案中,设置1个管理节点,6个计算节点,1个I/O节点,其中管理节点和计算节点及I/O节点都是同一个性能。使用的是HP 920cn机器,CPU选用Intel 处理器 2.6GHz,内存4GB,600GB硬盘空间。I/O节点连接一个NAS盘阵,一套千兆交换机,因为只有一块网卡,所以直接从访问层到计算层,如图3所示。

1.3 集群软件系统配置

(1)操作系统的选择

常见的操作系统有Windows、Linux、Unix以及Mac OS。Linux系统是由全世界各地成千上万的程序员设计和实现的,其目的是建立不受任何商业化软件的版权制约的操作系统,全世界都能自由使用UNIX兼容产品。在性能上与商业产品相比毫不逊色,且价格低廉,源码开放。Linux的版本目前有RedHat linux、Debian linux、Suse linux等,很多地球物理软件在Linux环境下开发和运行。同时,Linux操作系统集群具有扩展性,高可用性,非常适用于程序开发与批量处理,并且对不同的硬件架构具有很好的兼容性,无论是同构还是异构系统都可以用来构造集群。本集群选用Linux操作系统(Redhat Enterprise 5.4 X86_64 64),

图3 计算机集群系统结构图

(2)系统服务的构建

在构建服务上本文采用较为原始简易的方法来构建:

帐户构建:将所有节点的帐户共享,将/etc目录下的passwd、group、shadow都与主节点同步,将home目录在主节点上挂载,从主节点收集所有计算节点的公钥。

网络传输:将ssh、rsh、dsh等做好无密码之间传输服务,如/etc下的hosts、hosts.deny等文件。

文件共享:NFS (network file system) 配置从/etc目录的export文件共享。设置的时候注意格式以及权限设置,都可以在export文件里写清楚。

文件挂载:这个过程关键重要(file system mount),可以将其写入到开启自动启动,否则每次开机启动的时候会非常繁琐。

Yum配置:在Linux操作系统上,如果需要安装软件,就需要解决系统和软件之间的软件包的依赖关系,yum是Linux系统里面的一个快速安装的管理命令。功能强大,效率高,系统缺少安装包一步到位。

防火墙配置:防火墙关系到主机与访问端的连接问题,以及数据远程拷贝问题。本文中最终涉及到的技术问题的一部分系统配置也将是在这里。

2 简易集群性能测试及其应用

2.1 MPI软件的安装及应用

MPI是一种消息传递编程模型,并成为这种编程模型的代表。事实上,标准版MPI虽然很庞大,但是它的最终目的是服务于进程间通信这一目的。MPI适用于Windows、Linux等不同操作系统,同时也适用于工作站、服务器、PC机。

(1)并行软件安装:

软件安装版本:mpich2-1.2.1p1.tar.gz

软件安装路径:/opt/mpi

解压软件路径:

tar zxvf mpich2-1.2.1p1.tar.gz –C/opt (压缩包解压到/opt)

cd /opt/mpich2-1.2.1p1 (进入压缩包)

./config --prefix=/opt/mpi (设置安装路径:/opt/mpi)

make

make install

(2)设置mpi环境变量:

环境变量以csh为例:setenv PATH /opt/mpi/bin:$PATH (添加到.cshrc)

环境变量以bash为例:PATH=/opt/mpi/bin:$PATH (添加到.bashrc)

(3)测试命令

which mpd

which mpiexec

which mpirun

(4)添加.mpd.conf

添加完成后用vi 编辑器打开加入内容:secretword=

修改.mpd.conf权限 chmod 600 .mpd.conf

2.2 简易集群MPI并行环境测试

(1)MPI测试

简易集群并行MPI程序在linuxhp01-linuxhp07都已经安装。管理节点确定为linuxhp02,所有的软件配置文件都在该主机上。

进行测试机器有:linuxhp02 用户:user01 和linuxhp01 用户:user01

在程序目录下创建mpd.hosts文件。启动mpd & (在linuxhp01与linuxhp02分别启动);启动后在任意机器上执行:mpdboot –n 2 (参数n,与参数2表示用2台主机)。如图4所示:仔细观察这台机器是linuxhp02 启动mpd & 后使用pseaf | grep mpd 可以查看到进程ID 30147 mpd启动成功。从linuxhp02节点登陆到linuxhp01节点。

图4 mpd加节点进程启动

在linuxhp01下执行ps –eaf | grep mpd 可以看到linuxhp02的进程ID36435 在linuxhp01下启动成功,如图5所示。

图5 所示linuxhp01进程ID36435

(2)程序测试

在程序目录里面建立:mpd.hosts文件,启用的两个节点主机名写入:

linuxhp01

linuxhp02

启动mpd后,执行mpdbootn 2 执行完后主机不会给我们任何提示,但我们可以查到它的进程。

运行程序:mpirunnp 2 ./3D_QMIG_NEW 运行状态如图9所示,两台主机正在运算,如图6所示。

图6 MPI作业执行和运行

用Linux操作系统的top命令查看两台主机消耗的CPU状态、内存状态及其他系统资源状态,如图7所示。

图7 主机状态

(a) linuxhp01主机状态;(b)linuxhp02主机状态

(3)测试结果

在整个测试的过程中系统运行状态良好,目前运行的是三维地震数据叠前偏移算法,并行效率与集群的软硬件搭建情况和并行算法的设计都有很大关系。如图8所示,使用四个节点计算圆周率得出来的结果。使用1个节点的计算时间约21s,使用6个节点并行计算,约为4.6s。节点数越多,并行效率越高,计算时间越短,大大的提高了计算的速度和提高效率。

图8 测试圆周率所有时间与节点个数之间的关系

3 总结与展望

本文通过搭建小型计算机集群来展示高性能计算集群的搭建方法和过程,高性能计算不仅能够节省计算时间,提高计算精度,而且能够解决超大规模并行计算问题,目前使用简易型小集群在处理工作量小的数据很有帮助,处理较大量级的地震数据量表现为较为吃力。目前商业化的高性能计算集群技术非常成熟,硬件如LENOVO FlexSystem刀片节点、NextScale高密度节点。本文未来向商业化集群技术学习、模仿与实践,将计算资源最大化利用。

[1]李根国,桂亚东,刘欣. 浅谈高性能计算的地位及应用[J].计算机应用与软件,2006.

[2]姚益平,刘刚.面向大规模体系仿真的高性能仿真计算机系统[J].系统仿真学报,2011.

[3]黄訸,易晓东,李妍妍等.面向高性能计算机的海量数据处理平台实现与评测[J].计算机研究与发展,2012.

[4]孙立华,胡牧,孟庆强等.配网线损大数据高性能计算解决方案[J].计算机与现代化,2016.

[5]陈新宇,刘倩,张宝花等.基于高性能计算环境的科学计算应用平台设计与实现[J].科研信息化技术与应用,2016.

[6]张轶凡,卢正兴,王芙蓉.Linux下高性能网络I/O解决方案分析[J].现代计算机,2006.

[7]顾梦非,徐炜民.一个基于Linux的集群部署方案[J].计算机应用与软件,2008.

[8]徐成俊,冯婕,李继宏等.一种高性能计算网络安全解决方案[J].福建电脑,2008.

猜你喜欢

高性能集群计算机
计算机操作系统
基于计算机自然语言处理的机器翻译技术应用与简介
计算机多媒体技术应用初探
海上小型无人机集群的反制装备需求与应对之策研究
一种无人机集群发射回收装置的控制系统设计
信息系统审计中计算机审计的应用
Python与Spark集群在收费数据分析中的应用
一款高性能BGO探测器的研发
勤快又呆萌的集群机器人
高性能砼在桥梁中的应用