级 别: 中级 Vladimir Silva (vladimir_silva@hotmail.com),顾问, Lockheed-Martin 2007 年 11 月 01 日 本文介绍 PBS Professional,这是 Altair 的工业强度的 OpenPBS版本,是一种工作负载管理器和调度软件。学习基本知识,将 OpenPBS 与 PBS Professional 进行比较,了解 PBSProfessional 如何胜过其他一些工作负载管理系统,并简单来看一下将 PBS Professional 用于 Globus网格服务。 基本知识 PBS Professional是一个用于复杂和高性能计算环境(比如网格)的工作负载管理器和调度器。可以使用它来简化作业提交、跨多个平台集群分布工作负载,以及扩展到数百甚至数千个处理器。本文将概述 PBS Professional 用于满足组织需求的功能。它在单个或成组在一起的多个系统中支持作业。PBSProfessional 的功能包括: 作为一个调度器,PBS Professional 使用复杂的管理策略和调度算法来获得诸如此类的功能: PBS Professional 中有 4 个主要的组件: 在典型的集群配置中,pbs_mom将运行在作业将要运行在其上的每一个系统上。服务器和调度器可运行在相同的机器上,客户端命令可放置在将提交作业的机器上。PBSProfessional 为想要实现其自己的调度策略的站点提供一个应用程序编程接口 (API)。
调度算法 调度是给予线程或进程访问系统资源(比如处理器时间)的方法。这通常用于有效地使系统达到负载平衡。调度是任何工作负载管理软件的核心,它源于大多数现代系统需要一次执行多个进程。PBS Professional 支持以下调度算法:
PBSProfessional 守护程序 当系统引导时,守护程序就会启动,用户就可以将作业提交到 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 启动执行服务器。只有第一次才用 (-tcreate) 选项启动服务器,以初始化各种文件。但是更快的方式是简单地发出系统管理员命令: [root@sharky pbs]# service pbs startStarting PBS daemons:Starting pbs_mom: [ OK ]Starting pbs_sched: [ OK ]Starting pbs_server: [ OK ] |
配置执行队列 为了快速开始,应该创建一个默认的队列(如果还没有的话)用于提交作业。可由系统管理员使用命令行队列管理器 (qmgr)来完成这件事情。 # qmgrMax open servers: 4Qmgr: create queue dque queue_type=eQmgr: s q dque enabled=true, started=trueQmgr: s s scheduling=trueQmgr: |
提交作业 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 descriptionmy_executable |
很多选项可以在命令行中指定,但是在脚本本身中指定更加容易且更加用户友好。要提交脚本,可使用(qsub) 命令: $ qsub myscript.sh1637.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 -ahost1: Req'd Req'd ElapJob 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:4916434.host1 hnf romo 30cc.jun28 15446 1 8 -- 160:0 R 82:4416440.host1 hnf romo 03wus.mar2 22232 1 8 -- 150:0 R 81:5916441.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.
PBSProfessional 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 forjob execution”。 尝试以 root 之外的任何其他用户在 xpbs 中运行一个作业,应该会看到消息4.[my_host_domain],这表明已成功提交。对于这个特定的作业,date 命令的输出将会保存到 /tmp/foo.txt中。
哪个版本的 PBS最适合您? 这取决于您的组织的目标。下面是 OpenPBS 和 PBS Professional 之间的一个简单比较。 - OpenPBS 和 PBS Professional
- 可伸缩性和故障容忍 — OpenPBS 在最多 32 个节点上处理数百个作业。扩展到超过这一极限将会导致故障容忍问题。PBSProfessional 可以扩展到数千个 CPU 和最多 10,000 个作业。
- OpenPBS
- 可在 GNU Public License (GPL) 下免费使用。源代码也是可用的。
- PBS Professional
- 企业质量故障容忍和可靠性 — 故障容忍也叫做故障弱化(gracefuldegradation),就是允许计算机系统在它的一些组件出现故障的情况下仍然继续正确地操作。
- 多平台支持 — 只有 PBS Professional 运行在多种风格的 UNIX® 及 Windows®上。(OpenPBS 不运行在 Windows 上。)
- 桌面时间获取 — 时间获取使得本地区域(通常类似于硬件配置中的集群)中的桌面机器可作为一个计算平台可用。
- 占先调度 — 能够抢先或停止一个当前调度的任务,以便优先执行一个更高优先权的任务。
- 计数和作业统计包 —计数功能允许按资源(即计算节点)、作业、用户和其他对象来跟踪资源使用情况。该计数功能可与资源管理器提供的计数功能一起使用。
- 电话和 e-mail 技术支持。
- 商业许可。
正如您所见,OpenPBS 对于小型的、少于 32 个 CPU的低成本集群来说是一个不错的平台,在这样的环境中,故障容忍和可靠性都不是问题。对于具有数千个 CPU 的工业级集群来说,PBSProfessional 是更佳的选择。
PBSProfessional 如何优于其他工作负载管理系统? 本文不会详细比较各种网格调度器。但是将简单地比较 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 JobManager 文件 $GLOBUS_LOCATION/lib/perl/Globus/GRAM/JobManager/pbs.pm 中包含Globus 在提交作业到后端调度器时使用的配置选项。下图显示了针对 GT4 的 PBS配置选项。这些选项可能必须更改成匹配您的集群配置。例如,一些集群可能使用 SSH 或 RSH。 图 3. WS-GRAM PBS 配置脚本
对于单个执行系统,mpirun 必须设置为 no,cluster 必须是0(单个执行)。如果没有在单个执行系统上将 cluster 变量设置为 0,将会出现以下错误:“Job failed: Theexecutable could not be started.”。 工作原理 Globus WS-GRAM 服务能够安全地将作业提交到很多类型的作业调度器。WS-GRAM 被构建来支持 XML加密和签名。它使用数字证书在客户机和服务器之间发送安全的 XML SOAP 消息。WS-GRAM 将大多数流行的调度器(比如PBS、Condor、Platform LSF 和 IBM® Tivoli® Workload SchedulerLoadLeveler®)打包到单个 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.xmlDelegating user credentials...Done.Submitting job...Done.Job ID: uuid:272c8c7c-cfcf-11da-9061-00065ba4e6beTermination time: 04/20/2006 18:05 GMTCurrent job state: ActiveCurrent job state: CleanUp-HoldMonday August 06 2007Current job state: CleanUpCurrent job state: DoneDestroying job...Done.Cleaning up any delegated credentials...Done. |
-submit 参数告诉服务使用文件 pbs.xml执行一次作业提交。(-s) 参数告诉服务器将标准输出发回客户机,这对于短的作业是很有用的。另一方面,长时间运行的作业可以用批量模式提交。(-FtPBS) 参数告诉 WS-GRAM 将作业提交到 PBS 集群。为了完成这些工作,GT4 必须安装在提交主机上。
为何在 PBSProfessional 之上使用 WS-GRAM? 安装 GT4 以增强 PBS Professional 是困难且费时的,那么为何还要使用它呢?GT4在某些情形下可以提供明显的增强: - WS-GRAM 服务通过加密的网格服务提供安全的作业提交。某些组织需要高级别的安全。通过使用WS-GRAM,服务调用被使用消息级别的安全性和数字证书进行加密。
- 单点登录和授权 —复杂组织需要多个小组之间的通信级别。这些小组可能是本地的,也可能是远程的。这提出了身份验证挑战,因为用户可能需要登录到本地/远程资源或者授权凭证,才能有效地完成自己的工作。WS-GRAM 构建在 Grid Security Infrastructure (GSI)之上,用于单点登录和在多个虚拟组织之间授权。
- 异构环境下的可伸缩性 — 如果您的组织涉及到多个环境,具有 Condor 或 Platform LSF 之类的多个调度器,那么GT4 可提供事实上的中间件,以将各不相同的多个系统集成为单个网格计算系统。
因此,具有多个调度器集群的组织可以受益于 GT4 提供的集成。当安全性是主要关注的问题时,GT4 也是很有用的。
结束语 本文简单介绍了 PBSProfessional,这是一个集群基础设施软件,可用于在网格和高性能计算环境中简化作业提交,以及管理和调度工作负载。 |