1、高性能集群作业调度系统曙光信息产业股份有限公司1 提纲一作业调度系统概述二PBS作业调度系统三Maui调度器四曙光Gridview作业调度中间件五Q&A21.1 集群使用中存在的问题节点多用户多任务多3 系统资源整合 异构资源,软硬件资源的整合 任务综合管理 用户提交的任务的统一安排 用户权限的管理 对用户进行各类权限控制1.2 作业调度系统的功能4 资源管理器:管理集群的软硬件资源及认证信息等 队列管理器:管理当前所有已提交但还未完成的作业 调度器:为作业分配资源1.3 作业调度系统的组成5作业调度系统的结构1.3 作业调度系统的组成61.4 作业调度系统的发展历史7 提纲一作业调度系统概述
2、二PBS作业调度系统三Maui调度器四曙光Gridview作业调度中间件五Q&A8 PBS(Portable Batch System),最初由NASA的Ames研究中心开发,设计为一个能满足异构计算网络需要的软件包。它力求提供对批处理的初始化和调度执行的控制,允许作业在不同主机间的路由。PBS的开源版本为OpenPBS,目前已经停止开发。PBS的商业版为PBS Pro,由Altair公司开发和维护。TORQUE(Tera-scale Open-source Resource and Queue manager)为 OpenPBS的后续开源版本,修正了OpenPBS的很多bug,功能和可扩展性
3、都有很大提高。2.1 PBS作业调度系统9服务器:pbs_server调度器:pbs_sched执行器:pbs_mom2.2 PBS的组成10解压源文件包 tar zxvf torque-2.5.12.tar.gz 编译设置 cd torque-2.5.12 ./configure-prefix=/usr/local -with-server-home=/var/spool/torque -enable-syslog -with-scp -enable-docs 默认情况下,TORQUE将可执行文件安装在/usr/local/bin和/usr/local/sbin下。其余的配置文件和运行时环境
4、将安装在/var/spool/torque下编译和安装makemake install2.3 PBS的安装(Torque Server端)11节点操作系统相同,可以用如下SHELL脚本在计算节点(torque客户端)上安装#在管理节点上make packages#!/bin/bash for i in seq 1 20;do echo=node$i=ssh node$i/public/sourcecode/torque-2.5.12/torque-package-mom-linux-*.sh-install Done2.3 PBS的安装(Torque Client端)12p 以root作为to
5、rque的管理员账号创建作业队列在torque的安装源文件根目录中,执行./torque.setup rootp Server配置目录/var/spool/torque/server_priv/p 计算节点列表及属性:/var/spool/torque/server_priv/nodesnode2 np=12 amd chemnode3 np=12 amd chemnode4 np=8 intel chemnode5 np=8 intel chemnode6 np=4 intel bio gpunode7 np=4 intel bio gpu2.3 PBS Server配置13Server的系
6、统启动脚本/etc/init.d/pbs_server Scheduler系统启动脚本/etc/init.d/pbs_sched Mom系统启动脚本/etc/init.d/pbs_momTorque服务端 chkconfig pbs_server on chkconfig pbs_sched on service pbs_server start service pbs_sched startTorque客户端 chkconfig pbs_mom on service pbs_mom start2.3 PBS系统服务142.4 PBS主要操作队列设置节点查看提交作业查看作业作业其他操作15PB
7、S要能正常运行还需要通过qmgr命令在server进行配置,设置一些属性。输入qmgr命令进入配置交互命令,格式为 qmgr动作 对象类型和操作符 动作 对象类型 对象名 属性 操作符 值(,属性 操作符 值)create创建一个对象delete删除一个对象set设置对象的属性unset除去对象的属性print打印对象的属性list列出对象的属性server服务器queue队列node节点2.4.1 PBS的队列设置16创建队列create queue 队列名 queue_type=execution打开和启动队列set queue 队列名 enable=t,started=t打开调度set
8、server scheduling=t设置默认队列set server default_queue=队列名2.4.1 PBS的队列设置下面是让PBS可以正常运行的基本设置17 导入server配置文件qmgr queue.conf 配置文件例子 create queue default set queue default queue_type=execution set queue default max_running=10 set queue default enabled=True set queue default started=True set server scheduling=
9、True set server default_queue=default set server query_other_jobs=True2.4.1 PBS的队列设置18 资源和用户限制resources_default.cput 该队列默认的作业的CPU时间,格式:时:分:秒注意:该CPU时间为:进程数*(结束时间-开始时间)resources_default.walltime该队列默认的墙上时间,格式:时:分:秒max_running某队列最多可运行的作业数,如果该项为0或没有该项,表示没有限制max_user_run一个用户最多可以运行的作业数acl_user_enable是否启用用户
10、访问控制,如果acl_user_enable=True,则在acl_users中列出的用户才能使用该队列acl_users格式:,用户名不接受通配符acl_host_enable如果acl_host_enable=True,则acl_hosts属性中列出的主机才能使用该队列acl_hosts该队列可以使用的节点列表2.4.1 PBS的队列设置19dawningnode1$pbsnodespbsnodes-a-anode2 statestate=free npnp=12 ntypentype=cluster status=rectime=1347344839,varattr=,jobs=,sta
11、te=free,netload=1994804223313,gres=,loadave=0.15,ncpusncpus=32,physmem=132133404kb,availmemavailmem=147084788kb,totmem=148910612kb,idletime=1721946,nusers=1,nsessions=1,sessions=2455,uname=Linux node2 2.6.32-220.el6.x86_64#1 SMP Wed Nov 9 08:03:13 EST 2011 x86_64,opsys=linux gpusgpus=0node3 state=do
12、wn np=12 ntype=cluster 2.4.2 PBS查看节点状态20pbsnodes命令的主要参数-a 列出所有结点及其属性,属性包括“state”和“status”-o 将指定结点的状态标记为“offline”。这将帮助管理员暂时停止某些结点的服务-l 以行的方式列出被标记的结点的状态,如-l free,-l offline-c 清除结点列表中的“offline”或“down”状态设置,使结点可以被分配给作业-r 清除指定结点的“offline”状态2.4.2 PBS查看节点状态21步骤:1.准备:编写描述该作业的脚本,包括作业名,需要的资源等。2.提交:使用qsub命令将该作业
13、提交给PBS服务器3.排队:服务器将该任务排入适当的队列4.调度:服务器检查各工作节点的状态是否符合该作业的要求,并进行调度。5.执行:当条件满足时,作业被发给相应的执行服务器执行。程序运行时执行服务器会收集程序的标准输出和标准错误流,等程序结束时,将这些信息返回给用户。6.查询和调整:当作业在运行时,用户可以使用qstat进行状态查询。用户发现作业提交错误时,可以使用qdel删除正在运行的作业。7.查看结果:使用文本编辑软件vi或者系统命令cat,less等查看输出及错误信息显示。2.4.3 PBS作业提交22 在PBS系统中,用户使用 qsub 命令提交用户程序。用户运行程序的命令及PBS
14、环境变量设置组成PBS作业脚本,如下qsub 2.4.3 PBS作业提交基本命令#PBS-N vasp#PBS-l nodes=2:ppn=1#PBS-l walltime=12:00:00#PBS-q default cd$PBS_O_WORKDIR./test.exe作业脚本使用如下格式提交到PBS系统运行23运运 行行 参参 数数说说 明明-a 向PBS系统指定作业运行的开始时间。作业运行时间格式为:CCYYMMDDhhmm.SS-A 使用不同的用户来提交作业,缺省使用当前用户名-o-e 该参数指定标准错误输出的位置,缺省的情况下,PBS系统把标准输出和标准错误输出放在用户qsub命令提
15、交作业的目录下。标准错误输出:.o标准错误输出:.e路径使用如下格式标准::-N 指定提交的作业名-q 指定作业提交的目标队列。如果该参数没有指定,命令qsub会把作业脚本提交到缺省的队列中。-l 该参数指定作业脚本申请的PBS系统资源列表。申请资源列表使用如下格式:=,资源名=,.例如作业希望申请在双路节点上申请4个CPU资源的情况,则可以在脚本中如下:#PBS l nodes=2:ppn=2运行参数在 PBS 脚本和 qsub 命令行中均有效,qsub命令行参数的优先级更高2.4.3 PBS 运行参数24变变 量量 名名说说 明明登陆登陆SHELL继承来的变量继承来的变量包括$HOME,$
16、LANG,$LOGNAME,$PATH,$MAIL,$SHELL和$TZ。$PBS_O_HOSTqsub提交的节点名称$PBS_O_QUEUEqsub提交的作业的最初队列名称$PBS_O_WORKDIRqsub提交的作业的绝对路径$PBS_JOBID作业被PBS系统指定的作业号$PBS_JOBNAME用户指定的作业名,可以在作业提交的时候用qsub N 指定,或者在PBS脚本中加入#PBS N。$PBS_NODEFILEPBS系统指定的作业运行的节点名。该变量在并行机和机群中使用。当在PBS脚本中用#PBS l nodes=2:ppn=2指定程序运行的节点数时,可以使用$PBS_NODEFIL
17、E在脚本中引用PBS系统指定的作业运行的节点名。比如:#PBS l nodes=2:ppn=2mpirun np 4 machinefile$PBS_NODEFILE$PBS_QUEUEPBS脚本在执行时的队列名2.4.3 PBS 环境变量25#这是一个串行作业脚本的例子#PBS-N test#PBS-l nodes=1:ppn=1cd$HOME/test/./a.out$HOME/result/a.result#这是一个并行作业脚本的例子#PBS-N vasp_job#PBS-l nodes=2:ppn=2#PBS-q lowecho This job is$PBS_JOBID$PBS_QU
18、EUE cd$PBS_O_WORKDIRmpirun-np 16-machinefile$PBS_NODEFILE./vasp2.4.3 PBS 脚本举例#PBS-l nodes=2:ppn=4:amd:chem#PBS-l nodes=1:ppn=8:chem+1:ppn=8:bio#PBS-l nodes=node1:ppn=8+node2:ppn=8指定节点特性26p 一些软件有特殊的节点指定格式,比如ANSYS的命令行参数格式为:ansys121-dis-machines node1:2:node2:2-i test.inp-o test.logp 这时我们可以对$PBS_NODEFI
19、LE 进行字符处理,得到需要的格式2.4.3 PBS 脚本举例#这是一个ANSYS并行作业的例子#PBS-N ansys_job#PBS-l nodes=2:ppn=8#PBS-q lowINPUTFILE=test.inpOUTPUTFILE=test.loghosts=cat$PBS_NODEFILE|uniq-c|awk print$2:$1|tr n:|sed s/:$/cd$PBS_O_WORKDIRansys121-dis-machines$hosts-i$INPUTFILE-o$OUTPUTFILE27作业提交后,会生成一个作业号,如:dawningnode1$qsub test
20、.pbs93.node1查看集群作业运行状态:dawningnode1$qstat Job id Name User Time Use S Queue-93.node1 test.pbs test 0 R default95.node1 vasp.Hg vasp 0 E default111.node1 structure amber 0 Q default2.4.4 PBS 查看作业状态E:退出 Q:排队H:挂起 R:运行C:结束查询某个作业运行状态:qstat 93.node1(或者 qstat 93)显示作业运行在哪些节点上:qstat-n 93.node1 显示作业运行详细信息:qst
21、at-f 93.node128dawningnode1$qstat Job id Name User Time Use S Queue-93.node1 test.pbs zhaocs 0 R default95.node1 vasp.Hg vasp 0 E default111.node1 structure amber 0 Q defaultqdel 93.node1注:用户只能删除自己的作业,管理员可以删除所有用户作业2.4.5 PBS 作业其他操作删除作业29dawningnode1$qstat Job id Name User Time Use S Queue-93.node1 te
22、st.pbs zhaocs 0 R default95.node1 vasp.Hg vasp 0 E default111.node1 structure amber 0 Q default挂起作业:qhold 111.node1取消作业挂起qrls 111.node1作业挂起及取消2.4.5 PBS 作业其他操作30dawningnode1$qstat Job id Name User Time Use S Queue-93.node1 test.pbs zhaocs 0 R default95.node1 vasp.Hg vasp 0 E default111.node1 structur
23、e amber 0 Q default更改作业2.4.5 PBS 作业其他操作更改作业运行队列:qmove high 111.node1更改作业资源属性:qalter-l walltime=10:00:00 111.node131交换作业顺序2.4.5 PBS 作业其他操作dawningnode1$qstat Job id Name User Time Use S Queue-93.node1 test.pbs zhaocs 0 R default95.node1 vasp.Hg vasp 0 E default111.node1 structure amber 0 Q default112.
24、node1 gaussian gauss 0 Q default交换两个作业的排队顺序:qorder 111.node1 112.node1dawningnode1$qstat Job id Name User Time Use S Queue-93.node1 test.pbs zhaocs 0 R default95.node1 vasp.Hg vasp 0 E default112.node1 gaussian gauss 0 Q default111.node1 structure amber 0 Q default322.4.5 PBS 作业其他操作 PBS脚本中可以指定多个作业之间
25、的依赖关系,比如作业提交前另一个作业必须完成,否则处于排队状态#PBS-N step2#PBS-l nodes=4:ppn=4#PBS-q high#PBS-W depend=after:#PBS-N job_rerun#PBS-l nodes=4:ppn=4#PBS-q high#PBS-W depend=afternotok:当指定作业非正常结束,作业才能提交运行33一作业调度系统概述二PBS作业调度系统三Maui调度器四曙光Gridview作业调度中间件五Q&A 提纲34 Torque带有自己的默认调度策略器(pbs_sched),但是这个最基本的调度策略并不高级。它根据fifo的原则安
26、排作业,对一般的集群管理应该是足够了,但如果你的集群有几百个以上节点,分成若干个队列,那pbs_sched就力不从心了。为此,可以使用一系列第三方的调度策略进行补充。Maui就是被广泛使用的调度策略之一。3.1 Maui调度器介绍353.1 Maui调度器介绍 Maui采用积极的调度策略优化资源的利用和减少作业的响应时间。Maui的资源和负载管理允许高级的参数配置:作业优先级(Job Priority)、调度和分配(Scheduling and Allocation)、公平性和公平共享(Fairness and Fairshare)和预留策略(Reservation Policy)。Maui的
27、QoS机制允许资源和服务的直接传递、策略解除(Policy Exemption)和指定特征的受限访问。Maui需要资源管理器和其配合使用。我们可以把Maui想象为PBS中的一个插入部件。36集群已安装配置好Torque解压源文件包 tar zxvf maui-3.2.6p17.tar.gz 编译设置 cd maui-3.2.6p17 ./configure-with-pbs=/usr/local -with-pbs指定Torque安装目录编译和安装 make make install 3.1 Maui安装(Server)37p 编辑启动脚本 cd maui-3.2.6p17 cp etc/ma
28、ui.d/etc/init.d/vim/etc/init.d/maui.d 修改其中的”MAUI_PREFIX=/usr/local/maui”(maui的安装目录)p 停用pbs_sched,启用maui chkconfig pbs_sched off chkconfig maui.d on service pbs_sched stop service maui.d start3.1 Maui安装(Server)38Maui的配置参数都写在配置文件maui.cfg中,配置参数可以参考官方手册Maui Administrators Guide主要参数如下:vim maui.cfg#设置Maui
29、服务器主机名SERVERHOST server#一级权限用户,拥有Maui所有控制权限,包括更改调度策略,更改作业属性 ADMIN1 root#二级权限用户,不能更改调度策略,但能更改作业属性 ADMIN2 zhang wang zhao#三级权限用户,只有查看权限,ALL表示所有账户 ADMIN3 ALL3.2 Maui配置39#定义资源管理器(Resource Manager),指定类型为PBS,以及Torque服务器主机名,刷新资源信息的时间,端口号 RMCFG0 TYPE=PBS HOST=server RMPOLLINTERVAL 00:00:30 SERVERPORT 42559
30、SERVERMODE NORMAL#日志设置 LOGFILE maui.log LOGFILEMAXSIZE 10000000 LOGLEVEL 3 3.2 Maui配置40#设置Fair share策略#FSPOLICY PSDEDICATED#FSDEPTH 7#FSINTERVAL 86400#FSDECAY 0.80#设置回填(Backfill)策略 BACKFILLPOLICY FIRSTFIT RESERVATIONPOLICY CURRENTHIGHEST#节点分配策略#NODEALLOCATIONPOLICY MINRESOURCE#NODEALLOCATIONPOLICY C
31、PULOAD#NODEALLOCATIONPOLICY SHARED NODEALLOCATIONPOLICY FIRSTAVAILABLE 3.2 Maui配置41#QOS配置 QOSCFGpreemptor QFLAGS=PREEMPTOR QOSCFGpreemptee QFLAGS=PREEMPTEE CLASSCFGhigh PRIORITY=11000 QDEF=preemptor CLASSCFGlow PRIORITY=6000 QDEF=preemptee CLASSCFGmiddle PRIORITY=9000 QDEF=preemptee#用户优先级设置 USERCFGr
32、oot MAXPROC=400 MAXNODE=100 MAXJOB=100 USERCFGtest PRIORITY=100 MAXPROC=200 MAXJOB=10 USERCFGDEFAULT PRIORITY=100 MAXPROC=100 MAXJOB=43.2 Maui配置42一作业调度系统概述二PBS作业调度系统三Maui调度器四曙光Gridview作业调度中间件五Q&A 提纲43 4 曙光Gridview作业调度中间件介绍功能中间件应用使用方法44作业调度中间件结构图4.1 曙光Gridview作业调度中间件45增加节点修改节点删除节点创建队列修改队列删除队列队列节点用户修改
33、用户身份修改用户等级修改用户权限强大的资源管理4.2 作业调度中间件功能46基于WEB图形界面集成度高,嵌入到Gridview中流程简单界面友好1423轻巧的专业应用提交4.2 作业调度中间件功能47管理多个集群1提供完善的参数设置2灵活的提交方式34.2 作业调度中间件功能作业提交48提供作业监控功能1提供修改作业状态功能2提供多集群作业监控34.2 作业调度中间件功能作业管理49实用的用户管理和记账功能4.2 作业调度中间件功能50稳定性高4.2 作业调度中间件功能代码保护审查严格备份作业调度系统恢复作业调度系统功能稳定测试严格具有备份功能l单元测试严格l集成测试严格l兼容性测试严格51M
34、PI程序,例如:Vasp、WRF、mpiBLAST 等等典型的商业软件,例如:Gaussian、Fluent、Ansys等等应用与作业调度系统相结合常用的mpi程序常用的商业软件用户自己开发的串行并行程序4.3 GridView作业调度的应用52常用软件DOCK MPIBLAST常用软件常用软件工程量子力学生物常用软件AMBERCHARMMGROMACSNAMDLAMMPS分子动力学应用与作业调度系统相结合高性能主要领域主要业务软件得到各个领域的首席工程师的验证4.3 GridView作业调度的应用ANSYSLSDYNA CFXCOMSOLFLUENTABINITGAUSSIANPWSCFVA
35、SP534.4 GridView作业调度的使用544.4.1 节点监控节点监控提供以下几个功能(1)监控节点状态(2)增加节点(3)删除节点(4)重启节点进程554.4.1 节点监控564.4.2 队列管理 队列管理主要包含对队列的创建、删除、修改和查看等操作。只有root用户和用户管理中规定的管理员才能打开队列管理的主页面,从而操作控制队列。574.4.2 队列管理584.4.2 队列管理594.4.3 用户设置 用户管理主要是对用户在作业调度系统中的身份、优先级,以及在作业调度系统对资源的使用和使用上限进行设置、修改和查看。这里的用户是指已经存在于操作系统中的一般用户,不包括root用户和
36、用户ID小于500的系统用户。604.4.3 用户设置614.4.4 作业提交 该作业调度系统主要通过web页面将作业提交给调度器。系统中有三种提交方式:(1)Portal提交(2)脚本方式提交(3)命令行方式提交 每次只能选择一种方式提交,在打开提交窗口时,默认是第一种提交方式。624.4.4.1 portal提交 根据应用特点定制,目前集成了19种软件,具体使用方法见手册Gridview_应用Portal_用户手册634.4.4.1 portal提交644.4.4.1 portal提交用户针对应用特殊配置 每个应用在$HOME/.clusportal/目录下有个对应的.setting文件,
37、前缀为应用名。Fluentfluent.setting#run settingprog_default=/public/software/ansys_inc/v121/fluent/bin/fluentprog_list=/public/software/ansys_inc/v121/fluent/bin/fluent:#runfile settingFluent_ENVFILE=/public/software/profile.d/fluent-env.sh654.4.4.2 脚本和命令行提交664.4.4.2 脚本和命令行提交674.4.4.1 portal提交机群上作业情况my job
38、id is 326.node1run nodes is following:node4node4node4node4begin time is Tue Aug 21 11:09:34 CST 2012/public/software/ansys_inc/v121/fluent/fluent12.1.4/bin/fluent-r12.1.4 2d-g-t4-cnf=/opt/gridview/pbs/dispatcher/aux/326.node1-ssh-mpi=openmpi-i/home/shenj/work/fluent/3/cavity.jou parallel/timer/usage
39、Performance Timer for 300 iterations on 4 compute nodes Average wall-clock time per iteration:0.002 sec Global reductions per iteration:53 ops Global reductions time per iteration:0.000 sec(0.0%)Total wall-clock time:0.560 sec Total CPU time:2.300 secend time is Tue Aug 21 11:09:51 CST 201268实现了平台无关
40、的单一系统映像,减小了用户的软件安装以及跨平台使用的学习成本。实现了对高性能计算的完美封装。实现了对应用的性能提升。实现了对应用的高度优化,包括通信方式、网络连接等多种并行计算参数,为用户提供了计算性能的自动优化。高容错性保障。实现了对用户输入、系统命令、文件权限、作业调度系统等多方面的检查与确认功能,提高用户作业的成功率。基于web方式的提交。提交方式的限制,可降低用户操作难度,减少用户操作带来的系统不稳定因素,同时提高高性能和计算内部网络的安全性。支持用户定制开发。Gridview Web Portal 优势69“VNC管理”n提供了查询、打开和删除等管理操作的功能。nroot和Gridv
41、iew管理员可以查询或者打开所有的VNC会话,而普通用户仅能查询和打开自身的VNC会话。按钮区域集群列表会话列表4.4.5 VNC集成功能70打开VNC会话n选中某一个VNC会话,然后单击“打开会话”按钮,这时系统会打开一个新的“VNC打开”Tab页来呈现当前选中的VNC会话的窗口内容。4.4.5 VNC集成功能71删除VNC会话n删除会话用户可以一次选中一个或者多个会话,删除会话。注意:注意:如果被删除的会话正在被用户打开使用,删除之后那些打开的如果被删除的会话正在被用户打开使用,删除之后那些打开的VNC窗口窗口会被关闭,并且提示网络错误。会被关闭,并且提示网络错误。4.4.5 VNC集成功
42、能724.4.6 作业管理 作业管理主要包含对作业的查询、控制和删除等操作。对作业的控制包括保留、释放、挂起、恢复、重新运行等操作。新作业新作业查询功能查询功能 管理员可以删除任何作业;普通用户只能删除自己的作业,可以选择多个作业同时删除。734.4.7 历史作业74n主要特点p支持管理员和普通用户报表权限区分管理员可统计所有数据普通用户仅可统计自身数据p支持多种导出方式PDF、EXCEL、HTMLp支持多个字段的复合逻辑查询字段包括时间、用户、关键字等逻辑关系包括“与”、“或”p支持从不同的角度进行统计用户统计、节点统计、作业统计、集群统计p提供总表和详表方便汇报和对账4.4.8 作业记账754.4.8 作业记账n 查询条件 支持多个字段 时间 用户名 作业名 应用类型 关键字 支持与或逻辑 允许设置字段间的与或关系 支持精确/模糊匹配 允许设置匹配方式764.4.8 作业记账n 用户作业统计总表n 用户作业统计详表4.4.8 作业记账n 节点使用统计详表n 节点使用统计总表784.4.8 作业记账n CPU使用时间统计794.4.8 作业记账n 历史作业详表n 历史作业总表4.4.9 统计视图81Q&A82谢 谢!83