曙光集群简明使用手册 技术支持中心
目录 一、曙光集群的概念 二、曙光集群系统整体架构 三、曙光集群的使用 远程登录系统 上传下载数据 Linux常用命令 安装和运行程序 使用作业调度
一、曙光集群的概念
什么是集群 集群系统是利用高性能通信网络将一组计算机(节点)按 某种结构连接起来,在并行化设计及可视化人机交互集成 开发环境支持下,统一调度、协调处理,实现高效并行处 理的系统 所有计算机节点一起工作如同一个单一集成的系统资源, 实现单一系统映像(SSI) 集群是目前高性能计算机三大体系结构之一,是目前最主 流的和最有生命力的体系结构 集群是目前性能价格比最高的高性能计算机体系结构 集群特点:容易实现、容易维护、较好用的高性能计算机
曙光集群是使用Infiniband、Myrinet等高速网络或者千 兆网络节点机网络连接,进行高性能并行计算; 使用千兆网络连接,进行网络管理监控; 一个节点就是一台机器,N台机器通过连接高速网、安装 系统(系统的一致性,即系统配置必须一致)、调试并行 环境、安装应用软件来进行计算;
曙光集群可扩展性强,如果现有的计算资源无法满足需要, 可以根据实际需求,动态增加计算节点; 曙光6000 (星云),部署在深圳超算 曙光集群可扩展性强,如果现有的计算资源无法满足需要, 可以根据实际需求,动态增加计算节点; 曙光集群的易管理性:GridView、CloudView等监控管 理软件,协助管理集群系统;
二、曙光集群系统整体架构
曙光集群硬件系统的基本架构 集群系统的硬件组成 基于节点的集群 CPU:AMD 系列Opteron、Intel系列Xeon 高中低端产品: 八路、四路、双路、单路 外围设备: 机柜系统 网络系统 集群监控系统 集群管理系统 视频管理系统
集群系统的体系结构
集群系统的物理架构 (InfiniBand) 10
曙光集群的计算系统 计算节点 GPGPU节点 一般为双路或四路刀片或机架式服务器,为计算系统的主力。 SMP 胖节点 GPU即图形处理单元,GPGPU的意思为使用显卡做通用计算,由于GPU卡具有更多计算核心数,更高的能效比和更强的浮点计算能力,所以对于适合GPU,并在GPU上移植成功的应用软件提供更高的性能 计算系统 SMP 胖节点 一般用于一些有大内存、高IO或单机多核处理的需求,满足一些特殊应用的需求。 内容
曙光集群功能节点 管理节点 登陆节点 IO节点 登陆节点 IO节点 管理节点 用于用户登陆集群,在集群上实现作业提交,文件上传,编辑,程序编译等操作。可靠性要求高,数量少 用于运行系统级的管理软件,性能要求不高,但可靠性要求高,数量少 用于连接存储设备,提供共享存储空间。小型项目,使用单一IO节点提供NFS解决。大中型,使用并行文件系统,多个IO节点和存储空间解决IO瓶颈 登陆节点 IO节点 管理节点
高性能集群三要素 统一的文件印象 统一的系统印象 无密码访问 对于普通用户来说,所有节点看到的某一个文件都是相同的文件。 通过nfs或者并行文件系统实现。 通过NIS或同步用户信息来实现。 网络全通 rsh或ssh无密码访问配通
曙光集群物理视图(示例) 主要参数 种类名称:风冷机柜 长宽高:110*60*200 重量: 180KG 压强:500KG/MM 容量: 42U 通风设计:风冷 布线设计:电源、网络
曙光集群网络拓扑图(示例)
曙光集群用户视图(示例)
三、曙光集群的使用 远程登录系统 上传下载数据 Linux常用命令 安装和运行程序 使用作业调度
远程登录系统
登录工具 Putty VNC 一款免费的Telnet和SSH终端实现,可使用在Win32平台下。 Virtual Network Computing,可跨操作系统实现对远程桌面的 控制,对网络带宽要求较低; 由于采用远程桌面的模式,遇到网络连接中断不会影响实际操作, 重新连接即可;
Putty简介 完全免费; 在Windows 9x/NT/2000/Win7下运行的都非常好; 全面支持ssh1和ssh2; 绿色软件,无需安装,解压后即可使用; 体积很小,仅364KB (0.54 beta版本); 操作简单,所有的操作都在一个控制面板中实现。
Putty登录终端
Putty登录终端
VNC简介 VNC 是虚拟网络计算机(Virtual Network Computing)的缩写,属 于一种显示系统,能将完整的窗口界面通过网络,传输到另一台计算 机的屏幕上。 VNC是一款优秀的远程控制工具软件,由AT&T的欧洲研究实验室开 发,是基于UNIX和Linux操作系统的免费开放源码软件,远程控制能 力强大,高效实用。 VNC由两部分组成:一部分是客户端的应用程序(vncviewer);另外 一部分是服务器端的应用程序(vncserver)。VNC在UNIX、Linux和 Windows操作系统中都有相应的实现方式,图形用户界面友好,可 跨操作系统互访桌面。
VNC连接Linux远程桌面 创建VNC连接密码:首次启动VNC时要求创建密码 [dawn@node110 ~]$ vncserver You will require a password to access your desktops. Password: Warning: password truncated to the length of 8. Verify: Would you like to enter a view-only password (y/n)? n New 'X' desktop is node110:1 Creating default startup script /home/dawn/.vnc/xstartup Starting applications specified in /home/dawn/.vnc/xstartup Log file is /home/dawn/.vnc/node110:1.log 修改VNC密码:使用vncpasswd重设密码;或删除其passwd文件,再启动VNC时重新创建密码 [dawn@node110 ~]$ rm ~/.vnc/passwd 修改VNC启动界面的参数:xterm界面过于简陋,改为常用的gnome界面;注意行末“&”符号 [dawn@node110 ~]$ vi ~/.vnc/xstartup 1 #!/bin/sh 2 3 xrdb $HOME/.Xresources 4 xsetroot -solid grey 5 #xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" & 6 #twm & 7 gnome-session &
VNC连接Linux远程桌面 关闭VNC远程桌面: 重新打开VNC远程桌面: [dawn@node110 ~]$ vncserver -kill :1 Killing Xvnc process ID 22016 重新打开VNC远程桌面: [dawn@node110 ~]$ vncserver New 'X' desktop is node110:1 Starting applications specified in /home/dawn/.vnc/xstartup Log file is /home/dawn/.vnc/node110:1.log 在Windows客户端,通过VNC View连接远程Linux的桌面,注意远程桌面的描述格式:
VNC连接Linux远程桌面 VNC控制远程Linux桌面:
上传下载数据
WinSCP简介 WinSCP是一个Windows环境下使用SSH的开源图形化 SFTP客户端,并支持SCP协议。 它的主要功能就是在本地Windows与远程Linux服务器之 间安全地复制文件。
WinSCP登录界面
WinSCP登录界面
WinSCP操作界面
Linux常用命令
查询Linux命令使用方法:man man是“manual”的简写,可查询Linux常用命令的手册。 格式:man [关键字]
显示文件列表:ls ls是“list”的简写,用来显示指定目录下的内容。 格式:ls [参数] [路径或文件名]
编辑文件:vi vi是Linux终端下最常用的文档创建和编辑工具。 格式:vi [参数] [文件名]
检索字符串:grep grep是强大的检索工具,可用正则表达式检索字符串。 格式:grep [参数] [文件名]
远程复制文件:scp scp采用SSH协议,通过网络在节点之间传输文件。 格式:scp [[user@]host1:]file1 [[user@]host2:]file2
登录不同节点:ssh ssh采用加密传输协议,用于登录网络上的其它节点。 格式:ssh [user@]hostname [command]
文件目录类命令 浏览文件命令 cat:显示一个文本文件的全部内容; more/less:浏览文本文件的内容,没有编辑功能; head/tail:显示文本文件的头/尾若干行,默认为10行; 目录操作命令 mkdir:创建目录; rmdir :删除目录; 文件操作命令 touch:创建一个空文件,或者将指定文件的时间戳改为当前时间; rm:删除文件;“rm -rf”可以迭代方式删除整个目录,慎用; cp:拷贝文件; mv:移动文件,或者将文件重命名; ln -s:创建文件软链接,类似于快捷方式; tar:将一组文件、目录打包或解包,通过参数可设定是否压缩文件;
安装和运行程序
Linux安装程序 示例:编译、安装OpenMPI: 示例:设置OpenMPI的环境变量 tar -xzvf openmpi-1.4.3.tar.gz cd openmpi-1.4.3 ./configure --prefix=/public/software/ompi-1.43-gnu make make install 示例:设置OpenMPI的环境变量 vi ~/.bashrc export MPIDIR=/public/software/ompi-1.43-gnu export PATH=$MPIDIR/bin:$PATH export LD_LIBRARY_PATH=$MPIDIR/lib:$LD_LIBRARY_PATH export INCLUDE=$MPIDIR/include:$INCLUDE export MANPATH=$MPIDIR/share/man:$MANPATH source ~/.bashrc
Linux的环境变量 什么是环境变量? Linux是一个多用户的操作系统。多用户意味着每个用户登录系统后,都有自己专用的运行环境。而这个环境是由一组变量所定义,这组变量被称为环境变量。用户可以对自己的环境变量进行修改以达到对环境的要求。 定制环境变量 环境变量是和Shell紧密相关的,它是通过Shell命令来设置的。环境变量又可以被所有当前用户所运行的程序所使用。对于bash来说,可以通过变量名来访问相应的环境变量。 全局环境变量 /etc/profile、/etc/profile.d/*.sh这些文件中设置的环境变量对所有用户都起作用,登录时自动生效,称为全局环境变量。全局环境变量可用来设定一些默认的应用环境,如指定编译器、MPI并行库等。 用户环境变量 安装一个应用程序后,相关的环境参数尽量不要加入的全局环境变量,避免版本冲突。 可在/public/software/profile.d/目录下创建相应的env文件,让用户在~/.bashrc 或PBS脚本中自由选择source。
Linux的环境变量 显示环境变量:echo 命令 [dawn@vnode110 ~] echo $HOME /home/dawn 设置一个新的环境变量:export 命令 [dawn@vnode110 ~] export NAME="RaidCheng“ [dawn@vnode110 ~] echo $NAME RaidCheng 清除环境变量:unset 命令 [dawn@vnode110 ~] unset NAME [dawn@vnode110 ~] echo $NAME [dawn@vnode110 ~] 几个关键的环境变量: HOME:当前用户的主目录 PATH:决定了shell将到哪些目录中寻找命令或可执行程序 LD_LIBRARY_PATH:shell在哪些目录寻找动态链接库,非常重要 INCLUDE:编译程序时,设定在哪些目录下寻找头文件
运行串行程序 方法一 方法二 cd /home/your_account/your_workdir ./your_code cd $HOME vi .bashrc export PATH=/home/your_account/your_workdir:$PATH your_code
运行并行程序(1) 确认自己的并行环境 ## Open MPI ## source /public/software/profile.d/ompi143-gnu-env.sh which mpirun /public/software/ompi143-gnu/bin/mpirun ## Intel MPI ## source /public/software/profile.d/impi-env.sh /public/software/intel/impi/4.0.0.028/intel64/bin/mpirun
运行并行程序(2) 采用OpenMPI 单机并行 cd /home/your_account/your_workdir vi hosts.txt node1 slots=2 node2 slots=2 node3 slots=2 node4 slots=2 采用OpenMPI 单机并行 cd /home/your_account/your_workdir source /public/software/profile.d/ompi143-gnu-env.sh mpirun –np 4 ./your_code 跨节点并行 vi hosts.txt mpirun –np 8 –machinefile hosts.txt ./your_code
运行并行程序(2) 采用Intel MPI 设定节点之间的通讯密码 vi hosts.txt node1:2 node2:2 node3:2 node4:2 采用Intel MPI 设定节点之间的通讯密码 echo secretword=xxxxxx > $HOME/.mpd.conf chmod 600 $HOME/.mpd.conf 单机并行 cd /home/your_account/your_workdir source /public/software/profile.d/impi-env.sh mpirun –np 4 ./your_code 跨节点并行 vi hosts.txt mpirun –np 8 –machinefile hosts.txt ./your_code
使用作业调度
作业管理系统的结构
PBS 的基本命令 在PBS系统中,用户使用qsub命令提交用户程序。 注释,以“#”开头 PBS指令,以“#PBS”开头 SHELL命令 [dawn@node1 ~]$ vi vasp.pbs #PBS –N vasp.Hg #PBS –l nodes=2:ppn=8 #PBS –q high echo "This jobs is "$PBS_JOBID@$PBS_QUEUE cd $PBS_O_WORKDIR source /public/software/profile.d/ompi143-gnu-env.sh export vasp_exe=/public/software/vasp/vasp5.2.11-ompi mpirun -np 16 -machinefile $PBS_NODEFILE $vasp_exe [dawn@node1 ~]$ qsub vasp.pbs
#PBS –l: 申请计算资源 #PBS -l mem=200mb #PBS -l walltime=01:00:00 $TORQUEHOME/server_priv/nodes node01 np=4 bigmem dualcore node02 np=8 bigmem matlab …… #PBS -l mem=200mb #PBS -l walltime=01:00:00 #PBS -l nodes=1:ppn=4 #PBS -l nodes=4:ppn=2 #PBS -l nodes=node01+node02+node03 #PBS -l nodes=server:ib+3:bigmem:ib #PBS -l nodes=2:blue:ppn=2+red:ppn=3+b1014 #PBS -l nodes=4:ppn=4,mem=200mb #PBS -l other=matlab
qmgr –c: 查询队列信息 qmgr -c 'p s' …… # Create and define queue high create queue high set queue high queue_type = Execution set queue high acl_user_enable = True set queue high acl_users = dawn set queue high acl_users += root set queue high Priority = 30 set queue high resources_max.nodect = 4 set queue high max_user_queuable = 10 set queue high max_user_run = 4 set queue high enabled = True set queue high started = True …… qmgr -c “set queue high acl_users += guest”
pestat: 查询节点状态 [dawn@node1 ~]$ qsub example.pbs 2743.node200 [dawn@node1 ~]$ pestat node state load pmem ncpu mem resi usrs tasks jobids/users node10 excl 8.06* 24025 12 24025 662 0/0 12 2743 dawn node11 free 0.00 24025 12 24025 661 1/1 0 node12 free 0.00 24025 12 24025 661 1/1 0 node13 free 0.00 24025 12 28127 660 0/0 0 node14 free 0.00 24025 12 28127 661 1/1 0 node16 free 0.99* 24025 12 28127 1233 6/2 2 2733 NONE* 2735 NONE* node17 free 1.33 24025 12 24025 1011 3/1 1 2740 NONE* node18 free 0.00 24025 12 24025 661 1/1 0 node19 free 0.00 24025 12 28127 660 0/0 0 node20 offl* 0.00 48267 24 52369 1203 0/0 0 node21 offl* 0.00 48267 24 52369 1204 0/0 0 node22 offl* 0.00 48267 24 52369 1203 0/0 0 node23 free 0.00 48267 24 52369 1219 0/0 0 node24 free 0.00 48267 24 52369 1211 1/1 0 node25 free 0.00 48267 24 52369 1211 1/1 0 node26 free 0.00 48267 24 52369 1212 1/1 0 node27 free 0.00 48267 24 52369 1207 1/1 0 node28 free 0.00 32107 16 36209 894 0/0 0 node29 free 0.00 32107 16 36209 891 0/0 0 节点状态 excl :所有CPU资源已被占用; busy :CPU已接近满负荷运行; free :全部或部分CPU空闲; offl :管理员手动指定离线状态;
查询作业运行状态 查询作业命令 qstat [参数],其中参数可为: -q :列出系统队列信息 -B :列出PBS服务器的相关信息 [dawn@node1 ~/pbs]$ qsub example.pbs 2739.node200 [dawn@node1 ~/pbs]$ qstat -an node200: Req'd Req'd Elap Job ID Username Queue Jobname SessID NDS TSK Memory Time S Time -------------------- -------- -------- ---------------- ------ ----- --- ------ ----- - ----- 2739.node200 dawn high pbsTest 5905 1 2 -- 00:00 R -- node40/1+node40/0 查询作业命令 qstat [参数],其中参数可为: -q :列出系统队列信息 -B :列出PBS服务器的相关信息 -Q :列出队列的一些限制信息 -an:列出队列中的所有作业及其分配的节点 -r :列出正在运行的作业 -f jobid :列出指定作业的信息 -Qf queue:列出指定队列的所有信息
查询和删除作业 作业删除命令:qdel 作业号 注意事项 1、非root用户只能查看、删除自己提交的作业; [root@node1 ~]$ qstat Job id Name User Time Use S Queue ---------------- ---------------- ---------------- -------- - ----- 93.node1 test.pbs dawn 0 R default 95.node1 vasp.Hg vasp 0 E default 111.node1 structure amber 0 Q default [dawn@node1 ~]$ qdel 93.node1 作业删除命令:qdel 作业号 注意事项 1、非root用户只能查看、删除自己提交的作业; 2、在提交作业时,可根据算例规模的大小合理估算所需的walltime和Mem,把其写进作业脚本里,这样有助于更快、更有效地分配资源;
谢谢! Q&A