⼯作负载管理器和调度器PBSProfessional简介
基本知识
  PBS Professional 是⼀个⽤于复杂和⾼性能计算环境(⽐如⽹格)的⼯作负载管理器和调度器。可以使⽤它来简化作业提交、跨多个平台集分布⼯作负载,以及扩展到数百甚⾄数千 个处理器。本⽂将概述 PBS Professional ⽤于满⾜组织需求的功能。它在单个或成组在⼀起的多个系统中⽀持作业。PBS Professional 的功能包括:
  接受批作业
  保持和保护作业,直到作业运⾏
  运⾏作业
  将输出交付给提交者
  作为⼀个调度器,PBS Professional 使⽤复杂的管理策略和调度算法来获得诸如此类的功能:
  性能数据的动态收集
  增强的安全性
  ⾼级别的策略管理
  服务质量 (QoS)
  处理有⼤量计算的任务
  相关⼯作负载的透明分布
  ⾼级资源保留
  ⽀持检验点程序
  PBS Professional 中有 4 个主要的组件:
  客户端命令 — ⽤于提交、控制、监视或删除作业,并可以安装在任意⽀持的平台上。其中包括诸如 qsub 和 qdel 之类的命令,还有⼏个图形⼯具,⽐如 xpbs。
  服务器 (pbs_server) — 为批服务(⽐如创建和修改作业,以及保护作业免遭系统崩溃的影响)提供主要的⼊⼝点。所有客户机和其他守护程序都要通过 TCP/IP 与该服务器通信。
  调度器 (pbs_sched) — 控制⽤于通过⽹络提交作业的策略或规则。每个集可以创建其⾃⼰的调度器或策略。开始时,调度器查询服务器获得将要运⾏的作业,查询执⾏程序了解系统资源的可⽤性。
  作业执⾏程序 (pbs_mom) — 通过模仿⽤户会话等于⽤户的逻辑会话⽽执⾏作业。它在定向之后将输出交付给调⽤者。
   在典型的集配置中,pbs_mom 将运⾏在作业将要运⾏在其上的每⼀个系统上。服务器和调度器可运⾏在相同的机器上,客户端命令可放置在将提交作业的机器上。PBS Professional 为想要实现其⾃⼰的调度策略的站点提供⼀个应⽤程序编程接⼝ (API)。
  调度算法
  调度是给予线程或进程访问系统资源(⽐如处理器时间)的⽅法。这通常⽤于有效地使系统达到负载平衡。调度是任何⼯作负载管理软件的核⼼,它源于⼤多数现代系统需要⼀次执⾏多个进程。PBS Professional ⽀持以下调度算法:
  基于队列优先权的先进先出 (FIFO) — 它的⽬标是最⼤化 CPU 利⽤率。在这个策略中,只有当⼀个即将运⾏的线程严格地具有较⾼优先权时,它才会优先运⾏。FIFO 调度器具有创建饥饿作业的缺点(所谓饥饿作业是指已经等待了很长时间的作业)。
  作业和队列循环 — 类似于 FIFO,但是基于可配置的时间总量,在⼀个循环时间⽚内,实现⼀个基于优先权的优先策略。
  公平共享 — 基于使⽤和共享值来调度作业。
  负载平衡 —在时间共享节点和循环通过的节点之间平衡负载。
  专⽤的时间/节点 —在特定的时间将作业调度到特定的节点。
  PBS Professional 守护程序
  当系统引导时,守护程序就会启动,⽤户就可以将作业提交到 PBS Professional 队列中。然⽽,作业会被防⽌运⾏,直到管理员使⽤命令 # qmgr -c "set server scheduling = True" ⼿动启动调度进程。
  守护程序可由系统管理员通过以下序列⼿动启动,也可使⽤提供的服务启动脚本来启动:
# export PATH=$PATH:/usr/pbs/bin:/usr/pbs/sbin
# pbs_mom
# pbs_server -t create (first time only)
# pbs_sched
  第⼀⾏设置到 PBS ⼆进制⽂件的路径,pbs_mom 启动执⾏服务器。只有第⼀次才⽤ (-t create) 选项启动服务器,以初始化各种⽂件。但是更快的⽅式是简单地发出系统管理员命令:
[root@sharky pbs]# service pbs start
Starting PBS daemons:
Starting pbs_mom:                     [ OK ]
Starting pbs_sched:                    [ OK ]
Starting pbs_server:                    [ OK ]
  配置执⾏队列
  为了快速开始,应该创建⼀个默认的队列(如果还没有的话)⽤于提交作业。可由系统管理员使⽤命令⾏队列管理器 (qmgr) 来完成这件事情。
# qmgr
Max open servers: 4
Qmgr: create queue dque queue_type=e
Qmgr: s q dque enabled=true, started=true
Qmgr: s s scheduling=true
Qmgr:
  提交作业
  PBS Professional 作业是⼀个 shell 脚本,其中包含资源需求、作业属性和您想要执⾏的命令集合。存在很多可⽤的选项,下⾯这个⽰例脚本中显⽰了⼀些最常⽤的选项:
  清单 1. ⼀个普通的 PBS 作业提交脚本
#!/bin/sh
#
# Specifying system resources: wall clock time, memory, # of CPUs
# Time format:
#  [[hours:]minutes:]seconds[.milliseconds]
#
# Size format: integer[suffix]
# Where:
#  b or w bytes or words
#  kb or kw Kilo (1024) bytes or words
#  mb or mw Mega (1,048,576) bytes or words
#  gb or gw Giga (1,073,741,824) bytes or words
#
#PBS -l walltime=1:00:00
#PBS -l mem=400mb
#PBS -l ncpus=4
# Running Multi-node Jobs
#PBS -l nodes=node1,node2
# Merging output(o) and error(e) files
#PBS -j oe
#
# Staging (moving) input/output files around
# PBS uses rcp or scp (or cp if the remote host is the local host)
# to perform transfers. Hence stage-in and stage-out are just:
#    rcp -r remote_host:remote_file local_file 
#  rcp -r local_file remote_host:remote_file
# If using SSH:
#  scp -r user@remote_host:remote_file localfile
#  scp -r local_file user@remote_host:remote_file
#
#PBS -W stagein=user1@server:/path/f1.dat,user11@server:/path/f2.dat
#PBS -W stageout=user1@server:/path/o1.dat,user11@server:/path/o2.dat
#
# Email options
# -M email address
# -m email when:
#  a = on abort, b = on execution, e= on termination, n = never
#PBS -M email@address
#PBS -m a
#
# Submission queue name @ host name
#PBS -q queue_name@host
#
# Account Name or project description
#PBS -A project description
my_executable
  很多选项可以在命令⾏中指定,但是在脚本本⾝中指定更加容易且更加⽤户友好。要提交脚本,可使⽤ (qsub) 命令:
$ qsub myscript.sh
1637.cluster.acme
   成功提交作业之后,PBS Professional 会返回⼀个作业标识符(在本例中是 1637.cluster.acme)。这是作业的句柄,形式为sequence-number.servername.domain。作业标识符对于任何涉及作业的动作都是必需的,这些动作包括检查作业状态、修改作 业、跟踪作业或者删除作业,等等。
  当⽤户从⼀个不是 PBS Server 运⾏所在的系统提交作业时,需要系统级别的⽤户授权。这是 PBS Professional 运⾏作业并返回结果所必需的。要完成这⼀点,必须使⽤远程 shell(⽐如 RSH 或 SSH)跨集授予⽤户权限。RSH 本质上是不安全的,所以建议您启⽤PBS 以使⽤ SSH。这将需要为集中每台机器上的每个⽤户设置 SSH 密钥。
  检查作业状态
  qstat 命令⽤于请求作业、队列和 PBS Server 的状态。所请求的状态被写到标准输出(通常是⽤户的终端)。只有具有⽤户查看特权的作业才会显⽰。
  清单 2. qstat 命令的输出
$qstat -a
host1:
Req'd Req'd  Elap
Job ID     Username Queue  Jobname  SessID NDS TSK Memory Time S Time
--------------- -------- -------- ---------- ------ --- --- ------ ----- - -----
16422.host1  phe   nysdec  touchfiles  --  1  1  -- 01:00 W  --
16423.host1  css   nysdec  touchfiles  --  1  1  -- 01:00 W  --
16432.host1  hnf   romo  30cc.mar29 13739  1  8  -- 160:0 R 82:49
16434.host1  hnf   romo  30cc.jun28 15446  1  8  -- 160:0 R 82:44
16440.host1  hnf   romo  03wus.mar2 22232  1  8  -- 150:0 R 81:59
16441.host1  hnf   romo  03wus.jun2 22317  1  8  -- 150:0 R 81:59
  作业状态简写为单个字符:
E: Job is exiting after having run.
H: Job is held.
Q: Job is queued, eligible to run or be routed.
R: Job is running.
T: Job is in transition (being moved to a new location).
W: Job is waiting for its requested execution time to be reached.
S: Job is suspended.
  PBS Professional GUI:xpbs
  PBS 图形⽤户界⾯叫做 xpbs。它提供⼀个到 PBS 命令的⽤户友好的 point-and-click 界⾯。xpbs 使⽤ tcl/tk 图形⼯具套件,提供与 PBS 命令⾏界⾯命令相同的功能。
  图 1. xpbs 主 GUI
   当单击主 xpbs 窗⼝中的 Submit 时,就会启动 Submit Job 对话框(参见图 2)。该对话框由 4 个不同的区域组成。作业脚本⽂件区域位于左上⾓。选项区域包含各种⽤于设置作业属性的窗⼝⼩部件,分散在对话框的两边。xpbs 建⽴于 PBS 客户端命令之上,所以命令⾏界⾯的所有特性都可以通过 GUI 获得。使⽤ xpbs 执⾏的每个任务都被转换成必要的 PBS 命令,并代表⽤户执⾏该命令。
  图 2. xpbs 作业提交对话框
   在右上⾓的⾯板中键⼊您想要运⾏的命令,并在 Stdout File Name ⽂本框中输⼊⼀个输出⽂件名,然后单击 Confirm submit。不要作为 root ⽤户运⾏任何作业 — 否则会看到错误消息 “Bad UID for job execution”。
  尝试以 root 之外的任何其他⽤户在 xpbs 中运⾏⼀个作业,应该会看到消息 4.[my_host_domain],这表明已成功提交。对于这个特定的作业,date 命令的输出将会保存到 / 中。
  哪个版本的 PBS 最适合您?
  这取决于您的组织的⽬标。下⾯是 OpenPBS 和 PBS Professional 之间的⼀个简单⽐较。
   OpenPBS 和 PBS Professional 可伸缩性和故障容忍 — OpenPBS 在最多 32 个节点上处理数百个作业。扩展到超过这⼀极限将会导致故障容忍问题。PBS Professional 可以扩展到数千个 CPU 和最多 10,000 个作业。 OpenPBS 可在 GNU Public License (GPL)下免费使⽤。源代码也是可⽤的。 PBS Professional
  企业质量故障容忍和可靠性 — 故障容忍也叫做故障弱化(graceful degradation),就是允许计算机系统在它的⼀些组件出现故障的情况下仍然继续正确地操作。
  多平台⽀持 — 只有 PBS Professional 运⾏在多种风格的 UNIX® 及 Windows® 上。(OpenPBS 不运⾏在 Windows 上。)
  桌⾯时间获取 — 时间获取使得本地区域(通常类似于硬件配置中的集)中的桌⾯机器可作为⼀个计算平台可⽤。
  占先调度 — 能够抢先或停⽌⼀个当前调度的任务,以便优先执⾏⼀个更⾼优先权的任务。
  计数和作业统计包 — 计数功能允许按资源(即计算节点)、作业、⽤户和其他对象来跟踪资源使⽤情况。该计数功能可与资源管理器提供的计数功能⼀起使⽤。
  电话和 e-mail 技术⽀持。
  商业许可。
  正如您所见,OpenPBS 对于⼩型的、少于 32 个 CPU 的低成本集来说是⼀个不错的平台,在这样的环境中,故障容忍和可靠性都不是问题。对于具有数千个 CPU 的⼯业级集来说,PBS Professional 是更佳的选择。
  PBS Professional 如何优于其他⼯作负载管理系统?
  本⽂不会详细⽐较各种⽹格调度器。但是将简单地⽐较 PBS Professional 和其他⼀些调度器。记住,每个调度器都不是到处都适⽤的。每个调度器都是在不同的场景下适⽤于不同的⽬的。
  表 1. ⽐较
特性OpenPBS PBS Professional Condor SGE说明
可伸缩性 — CPU 和作业的数量32 个节点,数
百个作业
数千个节
点,10,000 个作业
数千个节
点,10,000 个作业
数千个节
点,10,000 个作业
由于故障容忍性问题,OpenPBS 不能很好
地伸缩。
平台UNIX UNIX、Windows UNIX、Windows UNIX
企业质量故障容忍和
任务管理器提交更改可靠性
N Y Y Y
桌⾯时间获取N Y Y N为让桌⾯计算机可作为计算平台可⽤。
占先调度N Y N N 为停⽌当前调度的任务,以便执⾏更⾼优先权的任务。
计数和作业统计N Y Y Y 为按照计算节点、作业、⽤户和其他对象跟踪资源使⽤情况。
技术⽀持N Y N N
许可GPL商业GPL GPL
   每个组织都具有其独特的需求和⽬标。具有低预算和⼀些⽀持 UNIX 的服务器的组织(⽐如研究机构、教育部门实验室),⽆疑喜欢使⽤诸如 Condor、SGE 或 OpenPBS 之类的开放源码调度器。商业组织需要安全性、故障容忍和⼯业强度,使⽤ PBS Professional 或类似的商业产品会更好⼀些。
  ⽤ Globus 和⽹格服务增强 PBS Professional
  下⾯很快地来看 ⼀下如何可以将 PBS Professional 与 Globus Toolkit (GT4) 之类的⽹格服务软件⼀起使⽤。GT4 除了提供服务之外,还提供了 Master Managed Job Factory Service (MJFS),也叫做 Job Manager。它的功能是为请求和使⽤远程系统资源提供单个界⾯,以便执⾏作业。这些界⾯叫做 WS-Globus Resource Allocation Manager (WS-GRAM),设计来提供⼀个灵活的界⾯,以增强PBS 之类的调度系统。
  定制 PBS Job Manager

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。