用户通过qsub命令来向系统提交任务,有两种方式提交:脚本方式和命令行方式。(一般情况下,不允许root用户使用qsub命令提交作业)。下面先讲一下用这两种方式提交作业的过程。 脚本方式提交 用户将需要执行的程序或命令写入脚本中,再加入一些必要或者可选的语句,就可以通脚本方式提交。脚本提交比较方便,用户可以用最简单的文字编辑器(例如 vi)编写一个脚本,然后使用 qsub 命令提交该脚本,pbs 会按照脚本内容执行相应的任务。脚本提交的不足之处就是需要用户执行任务前编写脚本。 脚本方式提交任务的一般格式为:qsub [script_name],script_name 是任务脚本的名称。 下面介绍 pbs 任务脚本的编写方法。 pbs 任务脚本包括三部分: arch 所需要的系统结构,只用在资源块中 -l arch=linux cput 任务的所有进程拥有的最大 cpu 执行时间 -l cput=1:00:00 file 任务能够创建的文件的大小 -l file=45mb host 指定执行主机的名称 -l nodes=X:host 分配 X个主机名称 中含有 host的执行节点 mem 任务的所有进程能够分配到的最大物理内存数 -l mem=100mb ncpus 请求的 cpu数 -l ncup=5 nice 任务运行时的 nice 优先级值 -l nice=3 pcput 任务的任何一个进程拥有的最大 cpu 执行时间 -l pcput=1:00:00 pmem 任务的任何一个进程能够分配到的最大物理内存数 -l pmem=45mb pvmem 任务的任何一个进程能够使用的虚拟内存的最大数 -l pvmem=100mb vmem 任务的所有并发进程能够使用的最大虚存数 -l pvmem=100mb walltime 任务可以处于运行态的最大 wall-clock 时间 -l walltime=1:00:00 custom resources 用户自定义资源 最常用的几种资源是:walltime, ncpus, mem, host。其它可以不用太关心。 a、资源块方式:资源块是将任务所需的资源作为一个整体,这个整体中说明了所需要的各种资源的数目。其格式为:-l select=[N:]chunk[+[N:]chunk…],如qsub –l select=2:ncpus=3:mem=4gb:arch=linux ,select=2表示需要2个这样的资源块,一个资源块包括3个cpu,4gb的内存,系统结构要求是linux,即总共需要6个cpu,8gb的内存。再如:-l select=2:ncpus=1:mem=10GB+3:ncpus=2:mem=8GB:arch=solaris注意中间的+号,是两个资源块的分隔符 b、请求全任务(job-wide)资源:格式为 –l 任务(程序或命令):可以是用户程序(如C程序),也可以是系统命令 下面是一个完整的任务脚本例子,脚本名为 mytask: 第 1 行说明所用的 shell;第 2 至5 行是 pbs 指示语句,设置了任务的一些属性,并请求了资源;第 6 至8行是要执行的命令及任务。 编写完脚本后,使用 qsub 命令提交脚本,在 shell下输入: 后敲回车。 系统会输出一个任务标识符:sequence-number.servername,如 220.cnode01。sequence-number是任务编号,后面需要用这个号查看任务的执行状态,ervername 是 pbs server的名称。 命令行方式提交 命令行方式提交不用写脚本,用户可以直接从命令行输入。输入的内容基本上和在脚本中输入的相同。其基本格式如下: qsub [directives] [tasks] ctrl-D 对于上面用脚本方式提交的任务,用命令行方式提交的格式如下: |