PBS

PBS的组成

  • 服务器:     pbs_server
  • 调度器:     pbs_scheduler
  • 执行器:     pbs_mom
  • 命令行:     用户脚本,管理命令等

PBS的基本原理

PBS的优缺点:

符合POSIX 1003.2d 标准;支持系统级检查点功能(需底层操作系统支持);很好的大规模扩展性,独立的调度模块;支持使用其它调度器;支持作业依赖和用户映射;灵活性:支持交互,批处理,串行及并行作业;只支持Unix类操作系统;多集群协作功能有限。

节点(node) :一个单一的操作系统映像,一个统一的虚拟内存映像,一个或多个cpu,一个或多个IP地址的计算机系统被称之为一个节点。通常执行主机(execution host)也被称之为节点。

属性:队列、服务器和节点都有与自己相关的属性,这些属性提供控制信息。与节点相关的属性有:状态、类型、虚拟处理器的个数、作业列表(本节点被分配给的作业)以及节点的特性。

节点特性:为了提供一组节点的分配的方法,零个或者多个特性被赋给每个节点。这个特性不过是一串对于PBS没有含义的字母和数字的组合(第一个字符必须是字母)

PBS的使用步骤

  1. 准备:编写描述改作业的脚本,包括作业名,需要的资源等。
  2. 提交:使用qsub命令将该作业提交给PBS服务器
  3. 排队:服务器将该任务排入适当的队列
  4. 调度:服务器检查各工作节点的状态是否符合该作业的要求,并进行调度。
  5. 执行:当条件满足时,作业被发给相应的执行服务器执行。程序运行时执行服务器会收集程序的标准输出和标准错误流,等程序结束时,将这些信息返回给用户。
  6. 查询和调整:当作业在运行时,用户可以使用qstat进行状态查询。用户发现作业提交错误时,可以使用qdel删除正在运行的作业。
  7. 查看结果:使用文本编辑软件vi或者系统命令cat, less等查看输出及错误信息显示。

PBS的基本命令

PBS系统中,用户使用qsub 命令提交用户程序。用户运行程序的命令及PBS环境变量设置组成PBS作业脚本,作业脚本使用如下格式提交到PBS系统运行:

qsub <PBS作业脚本>

qsub -N test.vasp -l nodes=4:ppn=2 -q defaults <PBS作业脚本>

PBS 作业脚本

注释,以“#”开头

PBS运行参数,以“#PBS”开头

SHELL命令

#PBS -N vasp.Hg

#PBS -l nodes=4:ppn=4

#PBS -l walltime=05:00:00

#PBS -q high

 

echo "This jobs is "[email protected]$PBS_QUEUE

cd $PBS_O_WORKDIR

mpirun -np 16 -machinefile $PBS_NODEFILE ./vasp

脚本中#PBS为脚本选项,用于设置一些参数:

#PBS N   表示任务名称。name15个字符,首字符为字母,无空格。

#PBS l   表示资源列表,用于设定特定任务所需的一些参数。这里的nodes表示并行环境下可以使用的节点数,而walltime表示任务最大时限,而cput 表示cpu时间的最大时限,运行时间和cpu使用时间超过对应的时限,任务就会以超时退出。这三个参数不是PBS脚本参数,而是并行环境所需的参数。

#PBS -q    表示当前任务选用的队列。在并行环境下,一个系统中往往有多个队列,任务提交后,将在所选的队列中排除等候。系统中有哪些队列可以用qstat -q查看。

qsub运行参数



     


-a <作业开始运行的时间>


PBS系统指定作业运行的开始时间。

作业运行时间格式为:      [[[[CC]YY]MM]DD]hhmm[.SS]


-A <用户名>


使用不同的用户来提交作业,缺省使用当前用户名


-o <标准输出文件的路径>

-e <标准错误输出的路径>


该参数指定标准错误输出的位置,缺省的情况下,PBS系统把标准输出和标准

错误输出放在用户qsub命令提交作业的目录下。

标准错误输出:<作业名>.o<作业号>

标准错误输出:<作业名>.e<作业号>

路径使用如下格式标准:  [<节点名>:]<路径名>


-N <作业名>


指定提交的作业名


-q <目标队列>


指定作业提交的目标队列,其中目标队列可以是目标队列、目标节点名或者

是目标节点上的队列。如果目标队列是一个路由队列,那么服务器可能把

作业路由到新的队列中。如果该参数没有指定,命令qsub会把作业脚本

提交到缺省的队列中。


-l <申请资源列表>


该参数指定作业脚本申请的PBS系统资源列表。

申请资源列表使用如下格式:

         <资源名>[=[<数量>]][,资源名[=[<数量>]] …..]

例如作业希望申请在双路节点上申请5CPU资源的情况,

则可以在脚本中如下:

#PBS –l nodes=2:ppn=2+1:ppn=1

PBS的环境变量



     


登陆SHELL继承来的变量


包括$HOME$LANG$LOGNAME$PATH$MAIL$SHELL$TZ


$PBS_O_HOST


qsub提交的节点名称


$PBS_O_QUEUE


qsub提交的作业的最初队列名称


$PBS_O_WORKDIR


qsub提交的作业的绝对路径


$PBS_JOBID


作业被PBS系统指定的作业号


$PBS_JOBNAME


用户指定的作业名,可以在作业提交的时候用qsub –N <作业名>指定,或者

PBS脚本中加入

#PBS –N <作业名>


$PBS_NODEFILE


PBS系统指定的作业运行的节点名。该变量在并行机和

机群中使用。当在PBS脚本中用#PBS –l nodes=2:ppn=2指定程序运行的节点数

时,可以使用$PBS_NODEFILE在脚本中引用PBS系统指定的作业运行的节点名。比如:

#PBS –l nodes=2:ppn=2

mpirun –np 4 –machinefile $PBS_NODEFILE <程序名>


$PBS_QUEUE


PBS脚本在执行时的队列名

PBS作业脚本举例

# 这是一个串行作业脚本的例子

#PBS -N Loop.out

#PBS -l nodes=1:ppn=1

cd $HOME/test/

./a.out > $HOME/result/a.result

 

# 这是一个并行作业脚本的例子

#PBS -N vasp.Hg

#PBS -l nodes=8:ppn=2

#PBS -q low

echo "This jobs is "[email protected]$PBS_QUEUE

cd $PBS_O_WORKDIR

mpirun -np 16 -machinefile $PBS_NODEFILE ./vasp

一个复杂的PBS作业脚本

#!/bin/bash

#PBS -N jobname

#PBS -l nodes=4:ppn=2

 

cat `echo $PBS_NODEFILE` > $HOME/$PBS_JOBID.nodes

for node in `cat $HOME/$PBS_JOBID.nodes`

   do

      rsh $node mkdir /tmp/$PBS_JOBID

      rsh $node cp -rf $PBS_O_WORKDIR/* /tmp/$PBS_JOBID/

   done

 

cd /tmp/$PBS_JOBID

mpirun -np 8 -machinefile $PBS_NODEFILE $HOME/bin/vasp

 

cp -rf /tmp/$PBS_JOBID/* $PBS_O_WORKDIR/

for node in `cat $HOME/$PBS_JOBID.nodes`

   do

      rsh $node rm -rf /tmp/$PBS_JOBID

   done

rm $HOME/$PBS_JOBID.nodes

指定节点特性

# 这是一个并行作业脚本的例子

#PBS -N vasp.Hg

#PBS -j oe

#PBS -l nodes=2:ppn=12:amd

#PBS -q low

 

echo "This jobs is "[email protected]$PBS_QUEUE

NP=`cat $PBS_NODEFILE | wc -l`

cd $PBS_O_WORKDIR

mpirun -np $NP -machinefile $PBS_NODEFILE ./vasp

#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

提交作业

vim  job.sh

添加“可执行命令”

qsub  job.sh

查询作业运行

作业提交后,会生成一个作业号,如:

[[email protected] ~]$ qsub test.pbs

93.node1

 

查看集群作业运行状态:

[[email protected] ~]$ qstat

Job id               Name                        User       Time Use S Queue

----------------   ----------------       ----------------           --------  -   -----

93.node1          test.pbs                    zhaocs            0    R  default

95.node1          vasp.Hg                     vasp             0    E   default

111.node1         structure                   amber            0    Q  default

Name:作业名称

User   用户名

Time  使用时间

S     作业状态(E:退出,H:挂起,Q:排队,R:运行,S:暂停)

Queue:队列       

查询作业运行

[[email protected] ~]$ qstat

Job id               Name                        User       Time Use S Queue

----------------   ----------------       ----------------           --------  -   -----

93.node1          test.pbs                    zhaocs            0    R   default

95.node1          vasp.Hg                     vasp             0    E   default

111.node1         structure                   amber             0   Q   default

 

查询某个作业运行状态:

qstat 93.node1 (或者 qstat 93)

 

显示作业运行在哪些节点上:

qstat -n 93.node1

 

显示作业运行详细信息:

qstat -f 93.node1

取消作业

[[email protected] ~]$ qstat

Job id               Name                     User          Time Use S  Queue

----------------   ----------------       ----------------           --------  -   -----

93.node1          test.pbs                      zhaocs           0    R  default

95.node1          vasp.Hg                      vasp             0    E   default

111.node1         structure                    amber             0    Q  default

[[email protected] ~]$ qdel 93.node1

作业挂起和取消挂起

[[email protected] ~]$ qstat

Job id               Name                        User       Time Use S Queue

----------------   ----------------       ----------------           --------  -   -----

93.node1          test.pbs                    zhaocs            0    R  default

95.node1          vasp.Hg                   vasp               0     E   default

111.node1         structure                   amber             0    Q  default

挂起作业:

qhold 111.node1

 

取消作业挂起

qrls 111.node1

更改作业属性

[[email protected] ~]$ qstat

Job id               Name                        User       Time Use S Queue

----------------   ----------------       ----------------           --------  -   -----

93.node1          test.pbs                    zhaocs            0    R  default

95.node1          vasp.Hg                   vasp               0     E   default

111.node1         structure                  amber              0    Q  default

更改作业运行队列:

qmove high 111.node1

 

更改作业资源属性:

qalter -l walltime=10:00:00 111.node1

交换作业排队顺序

[[email protected] ~]$ qstat

Job id               Name                        User       Time Use S Queue

----------------   ----------------       ----------------           --------  -   -----

93.node1          test.pbs                    zhaocs            0    R  default

95.node1          vasp.Hg                     vasp             0    E   default

111.node1         structure                   amber             0    Q  default

112.node1         gaussian                    gauss             0    Q   default

交换两个作业的排队顺序:

qorder 111.node1 112.node1

[[email protected] ~]$ qstat

Job id               Name                        User       Time Use S Queue

----------------   ----------------       ----------------           --------  -   -----

93.node1          test.pbs                    zhaocs            0    R  default

95.node1          vasp.Hg                   vasp               0     E   default

112.node1         gaussian                    gauss             0    Q   default

111.node1         structure                   amber             0    Q  default

作业依赖关系

PBS脚本中可以指定多个作业之间的依赖关系,比如作业提交前另一个作业必须完成,否则处于排队状态

#PBS -N step2

#PBS -l nodes=4:ppn=4

#PBS -q high

#PBS -W depend=after:<JOB_ID>

当指定作业非正常结束,作业才能提交

#PBS -N job_rerun

#PBS -l nodes=4:ppn=4

#PBS -q high

#PBS -W depend=afternotok:<JOB_ID>

Showq:可以查看任务的资源情况

tracejob命令:追踪作业的状态,语法是:tracejob –n(天数)  <jobID>,例子,tracejob -n4 6(查看4天内作业号为6的运行状态)

删除作业:qdel  6(id)

 

时间: 2024-07-29 08:43:16

PBS的相关文章

Unity5 GI与PBS渲染从用法到着色代码

本文主要介绍Untiy5以后的GI,PBS,以及光源探头,反射探头的用法以及在着色器代码中如何发挥作用,GI是如何影响渲染的,主要分成三个部分,最开始说明PBS需要的材质与相应概念,二是Unity 里相应GI的操作,三是对应着色器代码的理解.如果没有特殊声明,所有操作与代码都是针对Unity5.3. PBS材质与概念 简单来说,PBS的优点不同的照明下获得一致的外观,更容易实现,更直观的参数. PBS材质概念: 1.albedo 反照率 反照率贴图定义漫反射的基本颜色,与原来的漫反射贴图相比,不

监控pbs运行状况

# 监控内存使用情况 job_id=163997workdir=/share_bio/echo "population_sizes" >> $workdir/pbs/pbs.job.$job_id.mem_used.logs while [ 1 -eq 1 ]  do     msg=`qstat -f $job_id`     chars_count=${#msg}     if (($chars_count<100))     then       break  

ubuntu 12.04下配置单机pbs(torque)

配置环境 ubuntu 12.04 torque 2.4.6 配置步骤及出现问题解决(以root运行) 1.安装torque 官方网站的torque安装帮助文档没有针对ubuntu的安装步骤,安装起来非常费劲,因此这里采用apt-get来安装 apt-get install torque-server torque-client torque-mom torque-pam torque-server负责接收任务请求 torque-client在每个提交任务的节点上,负责提交任务到服务器 torq

如何在Rocks HPC集群里安装PBS Pro开源版

PBS Pro可以算是torque的商业版本.功能强大.尤其是在其开源之后,成为了最强大的免费任务调度软件. 但是PBS Pro开源版本的预编译版本是针对CEntos7的,而Rocks 集群管理软件只支持到CEntos6.8.因此使用PBS Pro开源版本,必须要从源代码安装.安装过程中有很多的困难.因此再次记录一下过程,供大家参考. 首先,rocks集群安装的时候最好使用6.1.1,不要使用6.2;不要安装sge; OS roll最好不要使用自带的,而是用标准的centos6.7或者6.8安装

PBS命令和使用

PBS是公开源代码的作业管理系统,在此环境下运行,用户不需要指定程序在哪些节点上运行,程序所需的硬件资源由PBS管理和分配. PBS(Portable Batch System)是由NASA开发的灵活的批处理系统.它被用于集群系统.超级计算机和大规模并行系统.PBS主要有如下特征: 易用性:为所有的资源提供统一的接口,易于配置以满足不同系统的需求,灵活的作业调度器允许不同系统采用自己的调度策略. 移植性:符合POSIX 1003.2标准,可以用于shell和批处理等各种环境. 适配性:可以适配与

Thinking in Unity3D:基于物理着色(PBS)的材质系统

关于<Thinking in Unity3D> 笔者在研究和使用Unity3D的过程中,获得了一些Unity3D方面的信息,同时也感叹Unity3D设计之精妙.不得不说,笔者最近几年的引擎研发工作中,早已习惯性的从Unity3D中寻找解决方案. Unity3D虽比不上UE那么老练沉稳,气势磅礴.也比不上CE那样炫丽多姿,盛气凌人.但它的发展势如破竹,早已遍地生花!故而在此记录一些自己的心得体会,供大家参详交流.若有欠妥之处,还望各位及时指正. Thinking in Unity3D由一系列文章

PBS常用指令合集

以下以任务名 job.pbs对应任务ID 12341234为代表,提交者用户名为user. 1.基本指令-最常用 提交作业 qsub job.pbs 查询全部作业 qstat 查询个人作业 qstat –u user 查询单个作业 qstat 12341234 删除运行中作业 qdel 12341234 2.更多提交方法 定时运行 qsub -a yyyymmddhhmmss job.pbs 或 qsub -a hhmm job.pbs 顺序运行 qsub -W depend=afterok:1

unity5, make a custom PBS shader

unity5中引入了基于物理着色(PBS)的Standard shader.由于这种着色器通过调节参数和贴图可逼真模拟各种硬质表面,所以不必再像unity4时代那样需要对各种质感材质单独编写着色器,而且能得到更好的效果.这种“万能着色器”仿佛给人一种不再需要自己编写着色器的假象,但做游戏跟做虚拟现实不一样,除了真实性,还要追求趣味性和艺术夸张.所以老古语不过时:没有使用自定义着色器的游戏,不是好游戏. 但自己实现PBS是很困难的,如果我们想既继承Standard shader的PBS特性又加入自

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

LMT NEW PBS作业排队管理系统分布式并行计算

LMT NEW PBS作业排队管理系统分布式并行计算 LMT NEW PBS作业排队管理系统,利用集群系统来构建分布式并行环境,将一个海量的计算请求看作一个作业,提交给集群系统,管理节点将这个作业分解为多个子任务,再根据收集的节点负载信息将这些任务分别映射到各个节点上进行计算. 一个作业在集群系统中的完整调度过程分为6个部分,分别为:提交作业,调度作业,分发作业,运行作业,返回输出和返回结果到提交节点. 基于集群系统的分布式并行计算结构如下图所示: (分布式并行计算结构图) 分布式并行计算结构包