PBS是公开源代码的作业管理系统,在此环境下运行,用户不需要指定程序在哪些节点上运行,程序所需的硬件资源由PBS管理和分配。

PBS(Portable Batch System)是由NASA开发的灵活的批处理系统。它被用于集群系统、超级计算机和大规模并行系统。PBS主要有如下特征:

  • 易用性:为所有的资源提供统一的接口,易于配置以满足不同系统的需求,灵活的作业调度器允许不同系统采用自己的调度策略。
  • 移植性:符合POSIX 1003.2标准,可以用于shell和批处理等各种环境。
  • 适配性:可以适配与各种管理策略,并提供可扩展的认证和安全模型。支持广域网上的负载的动态分发和建立在多个物理位置不同的实体上的虚拟组织。
  • 灵活性:支持交互和批处理作业。
OpenPBS( http://www.OpenPBS.org/)是PBS的Open Source的实现。商业版本的PBS可以参照: http://www.pbspro.com/

1、PBS命令

PBS提供4条命令用于作业管理。

(1)qsub 命令—用于提交作业脚本 命令格式:

qsub  [-a date_time] [-c interval] [-C directive_prefix] [-e path] [-I] [-j join] [-k keep] [-l resource_list]  [-m mail_options] [-M user_list][-N name] [-o path] [-p priority] [-q destination] [-r c] [-S path_list] [-u user_list][-v variable_list] [-V] [-W additional_attributes] [-z]
[script]

参数说明:因为所采用的选项一般放在pbs脚本中提交,所以具体见PBS脚本选项。

例:# qsub  aaa.pbs       提交某作业,系统将产生一个作业号

(2)qstat 命令—用于查询作业状态信息

命令格式:qatat [-f][-a][-i] [-n][-s] [-R] [-Q][-q][-B][-u]

参数说明:

-f  jobid  列出指定作业的信息

-a         列出系统所有作业

-i         列出不在运行的作业

-n         列出分配给此作业的结点

-s         列出队列管理员与scheduler所提供的建议

-R    列出磁盘预留信息

-Q         操作符是destination id,指明请求的是队列状态

-q         列出队列状态,并以alternative形式显示

-au userid 列出指定用户的所有作业

-B         列出PBS Server信息

-r         列出所有正在运行的作业

-Qf queue  列出指定队列的信息

-u         若操作符为作业号,则列出其状态。若操作符为destination id,则列出运行在其上的属于user_list中用户的作业状态。

例:# qstat -f 211 查询作业号为211的作业的具体信息。

(3) qdel 命令—用于删除已提交的作业

命令格式:qdel  [-W 间隔时间] 作业号

命令行参数: 例:# qdel -W 15 211 15秒后删除作业号为211的作业

(4) qmgr 命令—用于队列管理

qmgr -c "create queue batch queue_type=execution"

qmgr -c "set queue batch started=true"

qmgr -c "set queue batch enabled=true"

qmgr -c "set queue batch resources_default.nodes=1"

qmgr -c "set queue batch resources_default.walltime=3600"

qmgr -c "set server default_queue=batch"

2、PBS脚本文件 PBS脚本文件由脚本选项和运行脚本两部分组成。

(1) PBS作业脚本选项 (若无-C选项,则每项前面加‘#PBS’)

-a  date_time : date_time格式为:[[[[CC]YY]MM]DD]hhmm[.SS] 表示经过date_time时间后作业才可以运行。

-c  interval   : 定义作业的检查点间隔,如果机器不支持检查点,则忽略此选项。

-C  directive_prefix :在脚本文件中以directive_prefix开头的行解释为qsub的命令选项。(若无此选项,则默认为’#PBS’ )

-e  path     :将标准错误信息重定向到path

-I           :以交互方式运行

-j  join     :将标准输出信息与标准错误信息合并到一个文件join中去。

-k  keep     :定义在执行结点上保留标准输出和标准错误信息中的哪个文件。  keep为o 表示保留前者,e表示后者,oe或eo表示二者都保留,n表示皆不保留。若忽略此选项,二者都不保留。

-l  resource_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个处理器。

-m  mail_options :mail_option为a:作业abort时给用户发信;为b:作业开始运行发信;为e:作业结束运行时发信。若无此选项,默认为a。

-M  user_list    : 定义有关此作业的mail发给哪些用户。

-N  name         : 作业名,限15个字符,首字符为字母,无空格。

-o  path         : 重定向标准输出到path。

-p  priority     : 任务优先级,整数,[-1024,1023],若无定义则为0.

-q  destination  : destination有三种形式: queue , @server,queue@server。

-r  y|n          : 指明作业是否可运行,y为可运行,n为不可运行。

-S  shell        : 指明执行运行脚本所用的shell,须包含全路径。

-u  user_list    : 定义作业将在运行结点上以哪个用户名来运行。

-v  variable_list : 定义export到本作业的环境变量的扩展列表。

-V                : 表明qsub命令的所有环境变量都export到此作业。

-W  additional_attributes  : 作业的其它属性。

-z               : 指明qsub命令提交作业后,不在终端显示作业号。

(2)     运行脚本同LINUX下一般的运行脚本文件。
[注]:脚本文件中的mpirun_rsh命令行中的节点列表文件要用环境变量表示
$PBS_NODEFILE,这个环境变量表示由pbs自动分配给作业的节点列表;
节点数为命令行中指定的进程数。
格式如下:

mpirun_rsh –np 进程数 –hostfile $PBS_NODEFILE 可执行程序名

命令详解如下:

 

Getting Status on the System, Queues, and Jobs Submitting a Job Using the Graphical User Interface (GUI)

Command Short Description Tutorial Manual Page
qstat list information about queues and jobs Using qstat qstat man page
qstat -q list all queues on system HTML and PS qstat man page
qstat -Q list queue limits for all queues HTML and PS qstat man page
qstat -a list all jobs on system Using qstat qstat man page
qstat -au userid list all jobs owned by user userid Using qstat qstat man page
qstat -s list all jobs with status comments HTML and PS qstat man page
qstat -r list all running jobs HTML and PS qstat man page
qstat -f jobid list all information known about specified job Using qstat qstat man page
qstat -Qf queue list all information known about specified queue Using qstat qstat man page
qstat -B List summary information about the PBS server HTML and PS qstat man page
qsub jobscript submit jobscript to PBS Using qsub qsub man page
qsub -I submit an interactive-batch job Using qsub qsub man page
qsub -q queue submit job directly to a specified queue Using qsub qsub man page
xpbs Graphical User Interface to PBS commands Using xpbs xpbs man page
 

3、PBS环境下运行示例

(1)脚本文件编辑示例

实例1:运行mpi程序 命令行:#vi  aaa.pbs

编辑的内容:

#PBS -N myjob  #PBS -o /home/jz/my.out 标准输出文件

#PBS -e /home/jz/my.err错误输出文件

#PBS –l nodes=2:ppn=2 规定使用的节点数以及每个节点能跑多少核

cd 目录(你们原来直接在节点上运行时所在的目录)

mpirun –np 4 –hostfile $PBS_NODEFILE  /home/jz/helloworld

解释:原先大家都是在中断输入 mpirun_rsh…..这些命令执行程序的,现在只要把这些提交命令放在.pbs配置文件的最后,由PBS来调度执行 (自动分配节点和其它资源)。Myjob是为你此次要运行的程序起的任务名,可以改成你自己想要的名字原先输出信息都是直接在屏幕上显示的,现在屏幕上的 显示全部输出到文件中,上例中输出文件是/home/jz/my.out文件,大家可以根据自己的需要修改(目录,文件名)。程序运行时遇到的一些错误会 记录在.err文件中。好处:因为对每个任务都设定了不同的输出文件,所以看结果只要打开相应文件看就可以了,不需要开多个终端,里面有任务的详细信息, 比如实际分配的是哪些节点计算,运行时间等。

#PBS –l nodes=2:ppn=2,你们程序需要几个节点只要修改nodes后的数字就可以了,ppn=2保持不变,因为我们的机器每个节点都是双cpu的。

mpirun –np 4 –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提交(qsub xxx.pbs)

   实例2:运行非mpi程序 有些用户并不是自己编写mpi程序,同样也可以用pbs提交。

比如物理系运行程序时一般输入的命令是 RunDMol3.sh TiFeCp2-pbe-dspp-m=1-opt  ,那么配置文件可以这样写:

命令行:#vi  job.pbs 编辑的内容:

#PBS -N physics_job

#PBS -o /home/physics/physics_job.out

#PBS -e /home/physics/physics_job.err

#PBS -l nodes=1:ppn=2

#PBS -r y

cd 目录(你们原来直接在节点上运行时所在的目录)

RunDMol3.sh TiFeCp2-pbe-dspp-m=1-opt

解释:也就是说把原来在终端直接输入的命令RunDMol3.sh TiFeCp2-pbe-dspp-m=1-opt放到pbs配置文件中,因为你们只要一个节点,所以nodes=1,至于用哪个节点系统自动分配,你们 肯定很关心是分配了哪个节点给你们,那么可以用qstat命令查询(比如qstat -n)。

(2) 提交作业示例

命令行:#qsub aaa.pbs

作业提交后会有一个作业号

[test1@master pbstest]$ qsub pbsjob

48.master

(3) 作业状态查询示例

qstat 后加不同参数可以查看不同的信息(各参数的意思,上面有详细的说明,你们可以一个个试验一下,以后就知道查看哪些信息,需要哪些参数) 实例:

命令行:#qstat –a   (查看作业的状态)

解释:Job id 是给你提交的任务分配的任务号,S(任务状态,R表示正在运行,Q表示正在排队等候调度)

命令行:#qstat –n   (查看作业使用的节点)

命令行:#qstat –f  211   (查看有关作业运行具体信息)
删除作业:qdel 作业号 [test1@master pbstest]$ qdel 48

转自http://student.csdn.net/space.php?uid=124962&do=blog&id=13699

PBS命令和使用的更多相关文章

  1. PBS

    赞同,已经试验成功.后来查手册: $man qdel-p 的功能是强制净化队列.这个 "p" 可能是  "purge" 的缩略形式 qsub,qdel,qmgr ...

  2. 作业调度系统PBS(Torque)的设置

    1.修改/var/spool/torque/server_priv/目录下的nodes文件 Node1 np=16 gpus=4 Node2 np=16 gpus=4 ... 其中Node1为计算节点 ...

  3. pbs 作业管理命令

    PBS 提供4 条命令用于作业管理. (1) qsub 命令—用于提交作业脚本 命令格式: qsub [-a date_time] [-c interval] [-C directive_prefix ...

  4. PBS 作业调度应用

    PBS(Portable Batch System),最初由 NASA 的 Ames 研究中心开发,主要为了提供一个能满足异构计算网络需要的软件包,用于灵活的批处理(Portable Batch Pr ...

  5. 【Linux】单计算机安装PBS系统(Torque)与运维

    1.此次使用torque-5.0.0-1_43d8f09a.tar.gz这个版本http://www.adaptivecomputing.com/downloading/?file=/torque/t ...

  6. Cmder--Windows下命令行利器

    cmder cmder是一个增强型命令行工具,不仅可以使用windows下的所有命令,更爽的是可以使用linux的命令,shell命令. 安装包 安装包链接 下载后,直接解压即用. 修改命令提示符λ为 ...

  7. 【每日一linux命令4】常用参数:

     下面所列的是常见的参数(选项)义: --help,-h                              显示帮助信息 --version,-V                        ...

  8. .NET Core系列 : 1、.NET Core 环境搭建和命令行CLI入门

    2016年6月27日.NET Core & ASP.NET Core 1.0在Redhat峰会上正式发布,社区里涌现了很多文章,我也计划写个系列文章,原因是.NET Core的入门门槛相当高, ...

  9. MVVM模式解析和在WPF中的实现(三)命令绑定

    MVVM模式解析和在WPF中的实现(三) 命令绑定 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在WPF中 ...

随机推荐

  1. 4011: [HNOI2015]落忆枫音

    4011: [HNOI2015]落忆枫音 链接 分析: 原来是一个DAG,考虑如何构造树形图,显然可以给每个点找一个父节点,所以树形图的个数就是$\prod\limits_u deg[u]$. 那么加 ...

  2. 2_C语言中的数据类型 (五)char

    1.1       char类型 1.1.1          char常量,变量 char c:定义一个char变量 ‘a’,char的常量 Char的本质就是一个整数,一个只有1个字节大小的整数 ...

  3. cogs1685 【NOI2014】魔法森林 Link-Cut Tree

    LCT练手好题啊. SPFA的做♂FA是把边按照a排序,然后加一条权值为b的边跑SPFA,不断更新答案.很好的做♂FA,但复杂度无♂FA保证. LCT的做♂FA类似,也是把边按照a排序,然后也是加一条 ...

  4. [BZOJ4028][HAOI2015]公约数数列[分块+分析暴力]

    题意 题目链接 分析 首先明确 \(xor\) 运算和 \(\rm gcd\) 没有联系! 注意到一个数字取 \(\rm gcd\) 且保证每次取 \(\rm gcd\) 值都会变小的话,最多取 \( ...

  5. node.js学习笔记——前序

    一.什么是node.js 简单的说 Node.js 就是运行在服务端的 JavaScript. Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台. Node.js是一 ...

  6. MATLAB复制图片时边框大的问题

    当使用MATLAB画图时,需要将图片复制到word中,会发现图片有一个白色的边框,在论文的排版中是一个影响美观的问题 例如: >> x = 0:10; >> y = sin(x ...

  7. 【坚持】Selenium+Python学习记录 DAY10

    2018/05/31-2018/06/1 [官方文档](https://www.jetbrains.com/help/pycharm/set-up-a-git-repository.html) 通过p ...

  8. eclipse创建spring boot项目加载不到application.properties配置文件

    在配置文件application.properties中修改了端口号,但重启服务后发现端口号并没有跟着改变,发现是项目启动时没有加载application.properties文件导致 解决:项目-& ...

  9. FirstWebApp

    servlet规范中定义了web应用程序的目录层次:http://localhost:8080/docs/appdev/deployment.html 第一个web应用程序 开发,并部署到tomcat ...

  10. swapon和swapoff命令详解

    基础命令学习目录首页 原文链接:https://blog.csdn.net/yexiangCSDN/article/details/83182259 swapon命令用于激活Linux系统中交换空间, ...