工作负载管理器和调度器 PBS Professional 简介

来源:互联网 发布:石家庄网络销售招聘 编辑:程序博客网 时间:2024/06/02 02:18

基本知识

  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.com

   成功提交作业之后,PBS Professional 会返回一个作业标识符(在本例中是 1637.cluster.acme.com)。这是作业的句柄,形式为 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

工作负载管理器和调度器 PBS Professional 简介

   当单击主 xpbs 窗口中的 Submit 时,就会启动 Submit Job 对话框(参见图 2)。该对话框由 4 个不同的区域组成。作业脚本文件区域位于左上角。选项区域包含各种用于设置作业属性的窗口小部件,分散在对话框的两边。xpbs 建立于 PBS 客户端命令之上,所以命令行界面的所有特性都可以通过 GUI 获得。使用 xpbs 执行的每个任务都被转换成必要的 PBS 命令,并代表用户执行该命令。

  图 2. xpbs 作业提交对话框

工作负载管理器和调度器 PBS Professional 简介

   在右上角的面板中键入您想要运行的命令,并在 Stdout File Name 文本框中输入一个输出文件名,然后单击 Confirm submit。不要作为 root 用户运行任何作业 — 否则会看到错误消息 “Bad UID for job execution”。

  尝试以 root 之外的任何其他用户在 xpbs 中运行一个作业,应该会看到消息 4.[my_host_domain],这表明已成功提交。对于这个特定的作业,date 命令的输出将会保存到 /tmp/foo.txt 中。

  哪个版本的 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

   文件 $GLOBUS_LOCATION/lib/perl/Globus/GRAM/JobManager/pbs.pm 中包含 Globus 在提交作业到后端调度器时使用的配置选项。下图显示了针对 GT4 的 PBS 配置选项。这些选项可能必须更改成匹配您的集群配置。例如,一些集群可能使用 SSH 或 RSH。

  图 3. WS-GRAM PBS 配置脚本

工作负载管理器和调度器 PBS Professional 简介

   对于单个执行系统,mpirun 必须设置为 no,cluster 必须是 0(单个执行)。如果没有在单个执行系统上将 cluster 变量设置为 0,将会出现以下错误:“Job failed: The executable could not be started.”。

  工作原理

   Globus WS-GRAM 服务能够安全地将作业提交到很多类型的作业调度器。WS-GRAM 被构建来支持 XML 加密和签名。它使用数字证书在客户机和服务器之间发送安全的 XML SOAP 消息。WS-GRAM 将大多数流行的调度器(比如 PBS、Condor、Platform LSF 和 IBM® Tivoli® Workload Scheduler LoadLeveler®)打包到单个 Perl API 中。这个 API 然后又由 WS-GRAM 调用,WS-GRAM 负责分配资源、提交作业、查询作业状态和获得作业输出。WS-GRAM 中的作业文件用 XML 定义。例如:

  清单 3. 针对提交 PBS /bin/date 命令到 staff 队列的 WS-GRAM 作业文件

<job>
<executable>/bin/date</executable>
<directory>${GLOBUS_USER_HOME}</directory>
<argument></argument>
<stdout>${GLOBUS_USER_HOME}/stdout</stdout>
<stderr>${GLOBUS_USER_HOME}/stderr</stderr>
<queue>staff</queue>
<fileCleanUp>
<deletion>
<file>file:///${GLOBUS_USER_HOME}/stderr</file>
</deletion>
<deletion>
<file>file:///${GLOBUS_USER_HOME}/stdout</file>
</deletion>
</fileCleanUp>
</job>

  WS-GRAM 文件将提交 /bin/date 命令到 staff 队列。要运行该文件,可以像下面这样使用 globusrun-ws 命令:

  清单 4. 到 PBS 集群的 WS-GRAM 作业提交

globusrun-ws -submit -s -Ft PBS
-factory https://myhost:8443/wsrf/services/ManagedJobFactoryService
-f pbs.xml
Delegating user credentials...Done.
Submitting job...Done.
Job ID: uuid:272c8c7c-cfcf-11da-9061-00065ba4e6be
Termination time: 04/20/2006 18:05 GMT
Current job state: Active
Current job state: CleanUp-Hold
Monday August 06 2007
Current job state: CleanUp
Current job state: Done
Destroying job...Done.
Cleaning up any delegated credentials...Done.

   -submit 参数告诉服务使用文件 pbs.xml 执行一次作业提交。(-s) 参数告诉服务器将标准输出发回客户机,这对于短的作业是很有用的。另一方面,长时间运行的作业可以用批量模式提交。(-Ft PBS) 参数告诉 WS-GRAM 将作业提交到 PBS 集群。为了完成这些工作,GT4 必须安装在提交主机上。

  为何在 PBS Professional 之上使用 WS-GRAM?

  安装 GT4 以增强 PBS Professional 是困难且费时的,那么为何还要使用它呢?GT4 在某些情形下可以提供明显的增强:

  WS-GRAM 服务通过加密的网格服务提供安全的作业提交。某些组织需要高级别的安全。通过使用 WS-GRAM,服务调用被使用消息级别的安全性和数字证书进行加密。

   单点登录和授权 — 复杂组织需要多个小组之间的通信级别。这些小组可能是本地的,也可能是远程的。这提出了身份验证挑战,因为用户可能需要登录到本地/远程资源或者授权凭 证,才能有效地完成自己的工作。WS-GRAM 构建在 Grid Security Infrastructure (GSI) 之上,用于单点登录和在多个虚拟组织之间授权。

  异构环境下的可伸缩性 — 如果您的组织涉及到多个环境,具有 Condor 或 Platform LSF 之类的多个调度器,那么 GT4 可提供事实上的中间件,以将各不相同的多个系统集成为单个网格计算系统。

  因此,具有多个调度器集群的组织可以受益于 GT4 提供的集成。当安全性是主要关注的问题时,GT4 也是很有用的。

  结束语

  本文简单介绍了 PBS Professional,这是一个集群基础设施软件,可用于在网格和高性能计算环境中简化作业提交,以及管理和调度工作负载。

原创粉丝点击