PBS简介与部分命令
原生的Linux系统并不能很好的管理集群,因此还需要一个软件统筹集群的各个部分,即作业管理系统。
PBS(Portable Batch System)是集群中常见的一个作业管理系统,LSF和SLURM也是广泛使用的作业管理系统,目前基于PBS的发行版有三个:
- OpenPBS
- TORQUE
- PBS Professtional
目测实验室集群采用的发行版是TORQUE~~~,以及目测发行版之间的命令区别不大~~~
为了能充分利用集群的计算资源,普通用户应该尽量以任务管理系统管理作业。这里介绍一下集群中常用的几个命令。
PBS常用命令
pnodes
没有参数,可查看位于normal、high、gpu队列的节点资源占用情况(仅CPU核心占用情况)。
qsub
用于在ln01节点上提交计算任务到各个队列,计算任务所需的CPU核心数量、队列、内存、标准输出与标准错误、任务名称等都通过此命令指定,参数如下:
qsub [-a date_time] [-A account_string] [-b secs] [-c checkpoint_options] [-C directive_prefix] [-d
path] [-D path] [-e path] [-f] [-h] [-I] [-j join] [-k keep] [-K kill_delay] [-l resource_list] [-m
mail_options] [-M user_list] [-n node_exclusive] [-N name] [-o path] [-p priority] [-P proxy_user‐
name[:group]] [-q destination] [-r c] [-S path_list] [-t array_request] [-T prologue/epilogue
script_name] [-u user_list] [-v variable_list] [-V] [-w] path [-W additional_attributes] [-x] [-X]
[-z] [script]
具体的参数定义可通过man qsub查看,PBS支持以PBS脚本或交互式命令的方式提交计算任务,这里仅以PBS脚本为例,列举一些简单的用法。假设脚本文件名为maker.pbs,内容如下:
cd $PWD
maker maker_opts.ctl maker_bopts.ctl maker_exe.ctl >log 2>&1
PBS脚本本质上仍然是shell脚本,只是附带了部分#PBS开头的行用于为PBS作业指定参数,这部分PBS的参数也可以在qsub命令中给出。
qsub -N maker_bicycle -q normal -j oe -l nodes=1:ppn=20 maker.pbs:作业名为maker_bicycle,提交到normal队列即cu01-06节点,将标准错误和标准输入合并输出,需要1个CPU的20个核心;qsub -N maker_moto -q high -l nodes=1:ppn=72 maker.pbs:作业名为maker_moto,提交到high队列即cu07-09节点,需要1个CPU的72个核心。
作业管理系统的一个优势在于可以为程序跨节点并行提供支持,将上述maker.pbs修改为如下内容:
cd $PWD
mpiexec -mca btl ^openib -n 150 maker maker_opts.ctl maker_bopts.ctl maker_exe.ctl >log 2>&1
现在通过mpiexec命令将maker以并行的方式运行,并指定总共需要的核心数量为150,超出任何单一节点的CPU可用核心数量。
qsub -N maker_vehicle -q high -l nodes=3:ppn=50 maker.pbs:作业名为maker_vehicle,提交到high节点,需要3个CPU,每个CPU提供50个核心,共计150个核心,与脚本中要求的核心数量一致;qsub -N maker_vehicle -q normal -l nodes=5:ppn=30 maker.pbs: 同上,虽然提交到normal节点,仍保证需求的总核心数量与任务要求的一致。
交互模式的qsub
PBS系统支持以交互模式直接进入计算节点,便于部分任务调试,此时需要指定-I参数,不再需要pbs脚本:
qsub -N maker_interact -I -l nodes=1:ppn=4 -q normal: 交互模式下同样可以指定多个CPU核心数量;qsub -I -q high -l nodes=cu08:ppn=1:可以在-l:nodes参数中直接指定特定节点, 队列不能省略;qsub -I -q gpu:以交互模式进入gpu节点。
使用qsub交互模式进入计算节点可以为PBS系统提供正确的资源占用信息,保证其他以PBS方式提交的任务正确分配计算资源、避免计算资源冲突。虽然服务器支持以ssh方式免密登录计算节点,但已经发生数次由于滥用ssh运行计算任务导致的节点崩溃,不推荐以ssh方式运行任何计算任务!!!
** 因为PBS坏掉了,暂时(也可能很久)只能以ssh方式运行计算任务,运行前务必先用top、htop等命令检查和估计能够使用的计算资源。跨节点并行由于PBS坏掉也无法实现…… **
pbssubmit
pbssubmit是实验室早期某位前辈写的perl脚本,能以更友好的方式接收PBS任务的各项参数并传递给qsub,实现在一行命令中指定PBS参数和任务命令,推荐使用:
pbssubmit -l "make_pan.pl --ref Zmw_sc00394.1.fa --ref_anno Zmw_sc00394.1.gff3 --query Zjn_sc00188.1.fa --query_anno Zjn_sc00188.1.gff3 &> run.log" -n 1 -p 1 -j oe -b high
没有的同学可以找实验室有的同学要一份~~~