转帖 PBS提交任务及查看.docx
- 文档编号:5170065
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:9
- 大小:21.06KB
转帖 PBS提交任务及查看.docx
《转帖 PBS提交任务及查看.docx》由会员分享,可在线阅读,更多相关《转帖 PBS提交任务及查看.docx(9页珍藏版)》请在冰豆网上搜索。
转帖PBS提交任务及查看
PBS提交任务及查看任务转
用户通过qsub命令来向系统提交任务,有两种方式提交:
脚本方式和命令行方式。
(一般情况下,不允许root用户使用qsub命令提交作业)。
下面先讲一下用这两种方式提交作业的过程。
脚本方式提交
用户将需要执行的程序或命令写入脚本中,再加入一些必要或者可选的语句,就可以通脚本方式提交。
脚本提交比较方便,用户可以用最简单的文字编辑器(例如vi)编写一个脚本,然后使用qsub命令提交该脚本,pbs会按照脚本内容执行相应的任务。
脚本提交的不足之处就是需要用户执行任务前编写脚本。
脚本方式提交任务的一般格式为:
qsub[script_name],script_name是任务脚本的名称。
下面介绍pbs任务脚本的编写方法。
pbs任务脚本包括三部分:
*shell说明语句:
用来说明用户使用的是哪种shell,例如#!
/bin/sh说明用户需要使用Bourneshell,如果用户没有指定,则默认为Bourneshell
*pbs指示语句:
pbs指示语句是用户用来请求任务运行时所需的资源或设置任务的一些属性的。
以#PBS开头,如#PBS–Ntaskname是用来设置任务名称的。
pbs指示语句是可选的,用户可以不用关心它如何写,系统会自动设置。
*pbs指示句的一个主要作用是请求任务执行时所需要的系统资源,如cpu数目,存储容量,运行时间,运行优先级等等。
以脚本方式提交的任务的资源请求是通过pbs指示语句,一般格式为#PBS–l[选项=][选项对应的值],如#PBS–lncpus=5表示请求5个cpu为之服务。
系统资源如下所示
arch所需要的系统结构,只用在资源块中-larch=linuxcput任务的所有进程拥有的最大cpu执行时间-lcput=1:
00:
00file任务能够创建的文件的大小-lfile=45mbhost指定执行主机的名称-lnodes=X:
host分配X个主机名称中含有host的执行节点
mem任务的所有进程能够分配到的最大物理内存数-lmem=100mbncpus请求的cpu数-lncup=5nice任务运行时的nice优先级值-lnice=3pcput任务的任何一个进程拥有的最大cpu执行时间-lpcput=1:
00:
00pmem任务的任何一个进程能够分配到的最大物理内存数-lpmem=45mbpvmem任务的任何一个进程能够使用的虚拟内存的最大数-lpvmem=100mbvmem任务的所有并发进程能够使用的最大虚存数-lpvmem=100mbwalltime任务可以处于运行态的最大wall-clock时间-lwalltime=1:
00:
00customresources用户自定义资源
最常用的几种资源是:
walltime,ncpus,mem,host。
其它可以不用太关心。
资源请求的两种方式:
a、资源块方式:
资源块是将任务所需的资源作为一个整体,这个整体中说明了所需要的各种资源的数目。
其格式为:
-lselect=[N:
]chunk[+[N:
]chunk…],如qsub–lselect=2:
ncpus=3:
mem=4gb:
arch=linux,select=2表示需要2个这样的资源块,一个资源块包括3个cpu,4gb的内存,系统结构要求是linux,即总共需要6个cpu,8gb的内存。
再如:
-lselect=2:
ncpus=1:
mem=10GB+3:
ncpus=2:
mem=8GB:
arch=solaris注意中间的+号,是两个资源块的分隔符
b、请求全任务(job-wide)资源:
格式为–lkeyword=value[,keyword=value.]如:
qsub-lncpus=4,mem=123mb,arch=linux
任务(程序或命令):
可以是用户程序(如C程序),也可以是系统命令
下面是一个完整的任务脚本例子,脚本名为mytask:
1.#!
/bin/sh//指明所用的shell2.#PBS–Nmytask//设置任务名称
3.#PBS-lwalltime=1:
00:
00//请求任务执行时间
4.#PBS-lselect=ncpus=4:
mem=400mb//请求任务执行所需资源
5.#PBS-joe//设置相关属性(文件合并)
6.date/t//系统命令(打印日期时间)
7..\my_application//所要执行的任务(当前目录名为my_application的任务)
8.date/t//系统命令
第1行说明所用的shell;第2至5行是pbs指示语句,设置了任务的一些属性,并请求了资源;第6至8行是要执行的命令及任务。
编写完脚本后,使用qsub命令提交脚本,在shell下输入:
qsubmytask
后敲回车。
系统会输出一个任务标识符:
sequence-number.servername,如ode01。
sequence-number是任务编号,后面需要用这个号查看任务的执行状态,ervername
是pbsserver的名称。
命令行方式提交
命令行方式提交不用写脚本,用户可以直接从命令行输入。
输入的内容基本上和在脚本中输入的相同。
其基本格式如下:
qsubreturn//输入qsub命令后回车
[directives]//pbs指示语句(以#PBS为前缀)
[tasks]//任务或命令
ctrl-D//结束输入,提交任务
对于上面用脚本方式提交的任务,用命令行方式提交的格式如下:
1.qsub2.#PBS–Nmytask3.#PBS–lwalltime=1:
00:
004.#PBS–lselect=ncpus=4:
mem=400mb5.#PBS-joe6.date/t7../my_application8.date/t
注:
以命令行方式提交任务时,这些命令选项都要以pbs指示语句的格式给出,即选项之前要加前缀#PBS。
任务提交后,用户如果要知道任务的当前运行状态,可以通过qstat命令查询。
qstat命令的常用选项有:
无选项:
当qstat命令不带任何选项时,以默认方式显示任务信息,例如
[soofree@node32]$qstatJobidNameUserTimeUseSQueue
----------------
569.node32testsoofree0Rsmall
其中,Jobid是任务的标识符,Name是任务名称,User是任务所有者,TimeUse是CPU使用时间,S是任务当前状态(本例中R表示正在运行),Queue表示任务所在队列。
任务的状态如下:
*B只用于任务向量,表示任务向量已经开始执行
*E任务在运行后退出
*H任务被服务器或用户或者管理员阻塞
*Q任务正在排队中,等待被调度运行
*R任务正在运行
*S任务被服务器挂起,由于一个更高优先级的任务需要当前任务的资源
*T任务被转移到其它执行节点了
*U由于服务器繁忙,任务被挂起
*W任务在等待它所请求的执行时间的到来(qsub-a)
*X只用于子任务,表示子任务完成
再举一例,使用-a选项指定任务开始执行时间:
[soofree@nod32]$qsub-a2102test571.node32
[soofree@node32]$qstatJobidNameUserTimeUseSQueue
---------------–---–ode01testsoofree0Wdefault
此时任务状态(S)显示W,表示任务正在等待执行时间的到来
(补充):
PBS是公开源代码的作业管理系统,在此环境下运行,用户不需要指定程序在哪些节点上运行,程序
所需的硬件资源由PBS管理和分配。
1、PBS命令
PBS提供4条命令用于作业管理。
(1)qsub命令-用于提交作业脚本
命令格式:
qsub[-adate_time][-cinterval][-Cdirective_prefix]
[-epath][-I][-jjoin][-kkeep][-lresource_list][-mmail_options]
[-Muser_list][-Nname][-opath][-ppriority][-qdestination][-rc]
[-Spath_list][-uuser_list][-vvariable_list][-V]
[-Wadditional_attributes][-z]
[script]
参数说明:
因为所采用的选项一般放在pbs脚本中提交,所以具体见PBS脚本选项。
例:
#qsubaaa.pbs提交某作业,系统将产生一个作业号
(2)qstat命令-用于查询作业状态信息
命令格式:
qatat[-f][-a][-i][-n][-s][-R][-Q][-q][-B][-u]
参数说明:
-fjobid列出指定作业的信息
-a列出系统所有作业
-i列出不在运行的作业
-n列出分配给此作业的结点
-s列出队列管理员与scheduler所提供的建议
-R列出磁盘预留信息
-Q操作符是destinationid,指明请求的是队列状态
-q列出队列状态,并以alternative形式显示
-auuserid列出指定用户的所有作业
-B列出PBSServer信息
-r列出所有正在运行的作业
-Qfqueue列出指定队列的信息
-u若操作符为作业号,则列出其状态。
若操作符为destinationid,则列出运行在其上的属于user_list中用户的作业状态。
例:
#qstat-f211查询作业号为211的作业的具体信息。
(3)qdel命令-用于删除已提交的作业
命令格式:
qdel[-W间隔时间]作业号
命令行参数:
例:
#qdel-W1521115秒后删除作业号为211的作业
(4)qmgr命令-用于队列管理
qmgr-c"createqueuebatchqueue_type=execution"
qmgr-c"setqueuebatchstarted=true"
qmgr-c"setqueuebatchenabled=true"
qmgr-c"setqueuebatchresources_default.nodes=1"
qmgr-c"setqueuebatchresources_default.walltime=3600"
qmgr-c"setserverdefault_queue=batch"
2、PBS脚本文件
PBS脚本文件由脚本选项和运行脚本两部分组成。
(1)PBS作业脚本选项(若无-C选项,则每项前面加'#PBS')
-adate_time:
date_time格式为:
[[[[CC]YY]MM]DD]hhmm[.SS]
表示经过date_time时间后作业才可以运行。
-cinterval:
定义作业的检查点间隔,如果机器不支持检查点,则忽略此选项。
-Cdirective_prefix:
在脚本文件中以directive_prefix开头的行解释为qsub的命
令选项。
(若无此选项,则默认为'#PBS')
-epath:
将标准错误信息重定向到path
-I:
以交互方式运行
-jjoin:
将标准输出信息与标准错误信息合并到一个文件join中去。
-kkeep:
定义在执行结点上保留标准输出和标准错误信息中的哪个文件。
keep为o表示保留前者,e表示后者,oe或eo表示二者都保留,
n表示皆不保留。
若忽略此选项,二者都不保留。
-lresource_list:
定义资源列表。
以下为几个常用的资源种类。
cput=N:
请求N秒的CPU时间;N也可以是hh:
mm:
ss的形式。
mem=N[K|M|G][B|W]:
请求N{kilo|mega|giga}{bytes|words}大小的内存。
nodes=N:
ppn=M:
请求N个结点,每个结点M个处理器。
-mmail_options:
mail_option为a:
作业abort时给用户发信;为b:
作业开始运行发信;为e:
作业结束运行时发信。
若无此选项,默认为a。
-Muser_list:
定义有关此作业的mail发给哪些用户。
-Nname:
作业名,限15个字符,首字符为字母,无空格。
-opath:
重定向标准输出到path。
-ppriority:
任务优先级,整数,[-1024,1023],若无定义则为0.
-qdestination:
destination有三种形式:
queue,@server,queue@server。
-ry|n:
指明作业是否可运行,y为可运行,n为不可运行。
-Sshell:
指明执行运行脚本所用的shell,须包含全路径。
-uuser_list:
定义作业将在运行结点上以哪个用户名来运行。
-vvariable_list:
定义export到本作业的环境变量的扩展列表。
-V:
表明qsub命令的所有环境变量都export到此作业。
-Wadditional_attributes:
作业的其它属性。
-z:
指明qsub命令提交作业后,不在终端显示作业号。
(2)运行脚本同LINUX下一般的运行脚本文件。
[注]:
脚本文件中的mpirun_rsh命令行中的节点列表文件要用环境变量表示
$PBS_NODEFILE,这个环境变量表示由pbs自动分配给作业的节点列表;
节点数为命令行中指定的进程数。
格式如下:
mpirun_rsh–np进程数–hostfile$PBS_NODEFILE可执行程序名
3、PBS环境下运行示例
(1)脚本文件编辑示例
实例1:
运行mpi程序
命令行:
#viaaa.pbs
编辑的内容:
#PBS-Nmyjob
#PBS-o/home/jz/my.out
#PBS-e/home/jz/my.err
#PBS–lnodes=2:
ppn=2cd目录(你们原来直接在节点上运行时所在的目录)
mpirun_rsh–np4–hostfile$PBS_NODEFILE/home/jz/helloworld
解释:
原先大家都是在中断输入mpirun_rsh….这些命令执行程序的,现在只要把这些提交命令放
在.pbs配置文件的最后,由PBS来调度执行(自动分配节点和其它资源)。
Myjob是为你此次要运行的程序起的任务名,可以改成你自己想要的名字
原先输出信息都是直接在屏幕上显示的,现在屏幕上的显示全部输出到文件中,上例中输出文
件是/home/jz/my.out文件,大家可以根据自己的需要修改(目录,文件名)。
程序运行时遇到的一些错误会
记录在.err文件中。
好处:
因为对每个任务都设定了不同的输出文件,所以看结果只要打开相应文件看就可
以了,不需要开多个终端,而且里面有任务的详细信息,比如实际分配的是哪些节点计算,运行时间等。
#PBS–lnodes=2:
ppn=2,你们程序需要几个节点只要修改nodes后的数字就可以了,ppn=2保持
不变,因为我们的机器每个节点都是双cpu的。
mpirun_rsh–np4–hostfile$PBS_NODEFILE/home/jz/helloworld
此例中-np后的4是并行数(2×2=4个cpu),–hostfile$PBS_NODEFILE不需要改变。
/home/jz/helloworld是你编译好的可执行文件名,需修改。
对于每个你要运行的mpi程序都需要这样一个.pbs配置文件
也就是说大家原来的操作是:
mpirun…
现在改成2步走:
1)写个pbs配置文件(比如xxx.pbs);2)向pbs提交(qsubxxx.pbs)
实例2:
运行非mpi程序
有些用户并不是自己编写mpi程序,同样也可以用pbs提交。
比如物理系运行程序时一般输入的命令是RunDMol3.shTiFeCp2-pbe-dspp-m=1-opt,那么配置文件可以
这样写:
命令行:
#vijob.pbs
编辑的内容:
#PBS-Nphysics_job
#PBS-o/home/physics/physics_job.out
#PBS-e/home/physics/physics_job.err
#PBS-lnodes=1:
ppn=2
#PBS-ry
cd目录(你们原来直接在节点上运行时所在的目录)
RunDMol3.shTiFeCp2-pbe-dspp-m=1-opt
解释:
也就是说把原来在终端直接输入的命令RunDMol3.shTiFeCp2-pbe-dspp-m=1-opt放到pbs配置
文件中,因为你们只要一个节点,所以nodes=1,至于用哪个节点系统自动分配,你们肯定很关心是分配
了哪个节点给你们,那么可以用qstat命令查询(比如qstat-n)。
(2)提交作业示例
命令行:
#qsubaaa.pbs
显示结果:
(3)作业状态查询示例
Qstat后加不同参数可以查看不同的信息(各参数的意思,上面有详细的说明,你们可以一个个试验一
下,以后就知道查看哪些信息,需要哪些参数)
实例:
命令行:
#qstat–a(查看作业的状态)
显示结果:
解释:
Jobid211是给你提交的任务分配的任务号,S(任务状态,R表示正在运行,Q表示正在排
队等候调度)
8
命令行:
#qstat–n(查看作业使用的节点)
显示结果:
解释:
blade32就是分给你这个任务的节点
命令行:
#qstat–f211(查看有关作业运行具体信息)
显示结果:
解释:
exec_host显示的是实际执行该任务的节点
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 转帖 PBS提交任务及查看 PBS 提交 任务 查看