基本知识
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