涂金龙
摘 要:本研究阐述了高性能计算集群平台的特点,然后介绍了平台的硬件和软件组成,并简要地阐述了平台的构建过程,最后通过一个测试案例探讨了利用平台进行作业调度的流程和方法,希望可以为企业高性能计算运维人员提供一些借鉴和参考。
关键词:高性能计算;集群部署;高校科学计算
中图分类号:TP38 文献标志码:A 文章编号:1003-5168(2022)3-0026-04
DOI:10.19968/j.cnki.hnkj.1003-5168.2022.03.006
Design and Implementation of High Performance Computing Cluster Platform for Scientific Research Institutions
TU Jinlong
(Network and Information Technology Center of Jiangxi University of Chinese Medicine,
Nanchang 330004,China)
Abstract:This paper describes the characteristics of high-performance computing cluster platform, then introduces the hardware and software composition of the platform, and briefly describes the construction process of the platform. Finally, through a test case, this paper discusses the process and method of job scheduling using the platform, hoping to provide some reference for enterprise high-performance computing operation and maintenance personnel.
Keywords:high performance computing; cluster deployment; scientific computing in colleges and universities
0 引言
高性能計算(High Performance Computing,HPC)也被称为数据分析的超级计算机,是一套计算性能强大、数据传输率超高、具有大规模存储空间和完整软件的系统,通常包含计算处理单元、并行存储单元、网络单元、管理调度软件单元,主要采用集群架构,通过网络将大量的服务器连接起来,让所有服务器协调工作来完成一系列计算任务[1]。超级计算机和传统的计算机不同,它具有超强的计算能力,能够解决很多在日常生活中难以处理的问题。当前,计算与理论方法、试验手段并列为人类认识世界的三大主要手段[2]。在大型工程中,试验和理论方法在解决尖端问题,如开展科学研究等,存在着一定程度的瓶颈。因此,使用高性能计算技术来解决此类问题,就成为发展的必然趋势。现代科技和经济的发展使高性能计算服务应用的门槛不断降低。美国、日本等发达国家在高性能计算技术发展的支持下,其工业、科学研究、新材料、新能源、服务行业等产业发展很快,高性能计算技术已经与社会生产发展实现了深度融合。
江西省在物理、化学、生物、新能源、新材料等领域对高性能计算的需求总量峰值达100万亿次以上。然而,江西省的高性能计算基础设施非常薄弱并且较分散,基本以科研单位购买自用为主。江西省内各高校对各类科学计算的超算资源需求都比较旺盛。但目前各类研究单位在高性能计算能力方面相对比较薄弱,资源供给无法满足应用发展的需求。因此,迫切需要构建一个集中公共的高性能计算服务平台,来应对各类科学计算服务。建设基于高性能计算集群的服务平台,可以大大缓解这样的不利局面。
1 高性能计算集群平台的设计
1.1 高性能计算集群的硬件配置
某高校高性能集群系统拓扑图如图1所示。该系统包含以下几部分。
1.1.1 管理节点。由一台管理节点组成,负责用户登录、管理调度整个集群、任务提交等,对整个系统进行监控管理,所配的型号为NF5270M4。
1.1.2 登录节点。包括一台登录节点服务器,为用户登录平台使用,是直接和用户交互的节点,便于用户作业的上传、程序代码的编写、作业的提交和任务结果的查看等,所配的型号为NF5270M4。
1.1.3 存储节点。配置了分布式存储系统和Lustre并行文件系统,负责存储大量的计算数据,高可用、高安全,所配置型号为SA5224H。
1.1.4 计算节点。由25台高性能刀片服务器组成,承载平台的计算任务请求,所配置的型号为NX5440M4;胖节点型号为NF8460M3;MIC加速节点、GPU加速节点型号为NF5588M3。
1.1.5 网络子系统。由管理网络和业务网络组成,管理网络负责集群管理使用,由以太网1 000 M连接管理交换机。业务网络由Infiniband网络连接计算节点和存储子系统,是业务数据通信的专用网络。
1.1.6 KVM切换器。KVM系统用于连接所有计算节点、存储节点和管理节点,方便运维人员系统调式和管理使用。
1.1.7 显示系统。配置2台电视显示屏和1台笔记本电脑,电视大屏作为集群平台监控和作业调度可视化,为TCL电视,挂壁安装。
1.2 高性能集群平台的软件组成
高性能集群平台的软件包括底层Linux操作系统、集群管理系统、集群作业调度系统、集群平行环境和集群开发环境[3]。
①集群平台运行环境管理节点和计算节点均安装Redhat as 6.5企业版64位操作系统。
②集群管理系统。实现集群集中管理和集中监控的功能,部署的软件为ClusterEnginer。
③集群作业调度系统。OpenPBS作业调度系统以支持命令行及web方式实现作业的提交、查看等。
④集群平行开发环境。安装Intel C++/Fortran编译器、Intel编译、调试软件等编译器,Intel MKL数学核心库等数学库,满足大部分科学计算需要。
2 高性能计算集群平台的部署
2.1 高性能计算集群平台基础环境的配置
高性能计算集群平台基础环境的配置主要包括RSH、NIS、NFS、SSH等4个服务的配置过程。
2.1.1 RSH服务。需要在集群全部的节点中配置RSH权限,配置步骤如下:首先,在其中的一个节点的配置HOSTS文件中,配置全部计算节点的IP地址及计算机名信息;其次,共享给其他节点通用;然后,需要对操作系统中的RHOSTS和HOSTS.EQUIV文件配置加入全部节点的计算机名信息;最后,完成RSH服务配置,可以重启RSH服务。
2.1.2 NIS服务。NIS服务是一项目录服务技术,用来对多个系统管理的数据库作集中控制的网络产品服务[4]。客户端用户不用自己建立自己的/etc/passwd,可利用NIS服务使用服务器端的管理文件,需要负责维护在NIS服务器的文件即可。服务端的NIS配置#echo 'nisdomainname TS10K' >>/etc/rc.d/rc.local。
2.1.3 NFS服务。NFS服务是网络文件共享服务。NFS的作用是借助于计算机网络,可以把自己的文件目录共享给他人使用,远程服务器端的文件,能夠被用户和程序随机地访问和使用[5]。在本集群管理节点中配置好共享。配置的步骤如下:
建立文件/etc/exports
vi/etc/exports/,在文件内添加上语句:
/home*(rw,insecure,no_root_squash,sync)
/opt*(rw,insecure,no_root_squash,sync)
启动nfs
#/sbin/chkconfig nfs on
#/sbin/service nfs restart
在客户端通过利用命令showmount-e IP查看服务器端开放共享出来的文件目录。
2.1.4 SSH服务。SSH服务能够提供一种较可靠、专为桌面远程登录使用、为其他网络服务等提供的一种安全性的协议[6]。集群节点之间一般都是通过脚本配置无密码访问,在脚本中配置HOSTFILE文件中加入需要SSH服务的节点的主机名称。
2.2 集群管理软件的部署
批处理是指通过命令对所有计算节点进行统一操作。本集群平台批处理采用的是开源软件Tentakel。Tentakl是集群常用软件,能十分方便地在管理节点中安装配置软件。# vi /etc/tentakel.conf 中添加需要管理的机器名和群组。使用普通用户登录集群,然后所有计算节点执行以下命令,如果正常输出,可说明节点状态正常。输入# tentakel -g allc 'date'来验证Tentakel是否正常部署。
2.3 集群平台平行开发环境的配置
①将intel编译器压缩包放到/root下。输入如下命令,安装编译程序。
# tar -xvf parallel_studio_xe_2015_update1.tgz # 。/install.sh
②配置环境变量。可以通过编写.sh脚本,配置全局环境变量,将脚本放在/etc/profile.d下。如果是单用户的变量,可以写入每个用户的$HOME/.bashrc下。
# vi /etc/profile.d/intel.sh source /opt/intel/composer_xe_2015.1.133/bin/compilervars.sh intel64so-urce /opt/intel/mkl/bin/intel64/mklvars_intel64.sh
2.4 集群平台作业调度软件的配置
作业调度软件是专为高性能集群平台而开发的一款作业调度软件,底层用openpbs和maui作业调度管理软件。作业管理提供负载均衡共享服务,有时被称作为负载管理。它主要用于用户的作业调度,能最优地调度和优化系统中的各类计算资源[7]。目的是有效地管理集群,合理地调度作业,充分利用集群的软硬件资源及宝贵的CPU时间,提高系统的吞吐率和利用率,如图2所示。
3 作业提交调度实践
利用作业调度系统,可以对集群平台中的硬件资源和软件资源进行集中统一的管理,也可以管理用户所提交的作业任务,并根据集群中资源使用的实际情况,合理调度作业执行,从而达到提高各类资源的利用率及用户作业的执行度的作用[8]。作业调度过程如图3所示。
下面以一个实际的案例,阐述作业提交的步骤和作业调度的流程。
3.1 添加新用户
在集群中添加新用户,首先在管理节点mu01上添加新用户,编辑/var/yp 目录,这样client端可以使用创建的用户登录系统。创建完用户后,在NIS基础上,节点间实现ssh无密码访问后,还需要针对环境变量进行相关设定。只需要在mu01节点上修改(/home/tujl1010目录是共享的),使用Tentakel工具在所有节点上执行source命令即可。在bashrc添加对应的环境变量,环境变量中可以指定Intel c、Intel fortran、MKL和MPI的安装路径。此处修改后就不需要在pbs脚本中指定。bashrc文件输入如下命令。
#vi /home/tujl1010/.bashrc
source /opt/intel/composer_xe_2015.1.133/bin/compilervars.sh intel64
source /opt/intel/impi_5.0.2/bin64/mpivars.sh
source /opt/intel/mkl/bin/mklvars.sh intel64
以lammps应用为例,图4介绍PBS脚本文件的编写。
3.2 提交作业
使用普通用户,登录到mu01节点,使用#qsub sleep.pbs提交作业,每个作业提交后必有一个作业号码。
3.3 查看作業状态及结果
通过qstat -n命令查看作业的状态,计算完毕后查看输出结果,以sleep为例,这里的名字取决于在脚本中设定的作业名字,后面的数字15即作业号。运行后看到多出了文件sleep.e15 sleep.o15,其中e代表错误输出,o代表正确输出。同时也可以通过web监控界面观察作业调度情况,如图5所示。Job statistics 中Q为排队状态、R为正在执行状态、C为执行结束状态。
4 结语
高性能计算集群平台要求有直观的界面化操作,以虚拟化技术快速部署资源,实现动态的、可伸缩可扩展的服务,按需求提供资源,通过互联网提供服务等智能化的管理体系来提高科学计算的效率、节省计算成本。平台的建立将极大地推动超级计算机的普及应用和产业化,解决目前科研院校计算资源不足的问题,从而促进药物设计、新材料、新能源等领域的发展,有效地推进了江西省产业结构优化升级、发展方式转变。
参考文献:
[1] 黄建强,孟永伟,曹腾飞,等.青海大学三江源数据分析中心高性能计算集群的构建与设备管理[J].实验技术与管理,2014(12):237-240.
[2] 廖湘科,肖侬.新型高性能计算系统与技术[J].中国科学:信息科学,2016(9):1175-1210.
[3] 安喜锋.高性能计算集群管理系统与作业调度技术研究与实现[D].西安:西北工业大学,2005.
[4] 吴梦芸.一种基于1分布式数值计算模式软件的实现[D].成都:电子科技大学,2016.
[5] 刘建.基于CIFS的文件属性信息扫描方法研究[J].硅谷,2012(24):100-101.
[6] 郭默.分布式网络爬虫的研究与实现[D].西安:西北大学,2016.
[7] 叶庆华.基于服务的机群作业管理系统设计与实现[D].北京:中国科学院研究生院(计算技术研究所),2002.