Altair PBS Professional
PBS(Portable Batch System) Professional 是一个分布式工作负载管理系统,用于管理和监控计算工作负载。PBS 由守护进程和命令组成,用于管理一台或多台计算机上的作业。您可以使用 PBS 来完成提交、查询、更改、监控、移动和删除作业等任务。您可以在一个或多个云中运行作业,可以管理作业成本,还可以使用模拟来调整 PBS 配置。
-
PBS Professional的核心功能
- 作业调度: 根据预设的策略和资源可用性,智能地将作业分配到最合适的计算节点上执行。
- 资源管理: 对集群中的计算资源(如CPU、内存、磁盘)进行统一管理和分配。
- 作业监控: 实时监控作业的运行状态,提供详细的作业日志和报告。
- 故障恢复: 在发生故障时,能够自动恢复作业,保证计算任务的连续性。
-
PBS Professional的主要特点
- 灵活的调度策略: 支持多种调度策略,可以根据不同的作业类型和优先级进行定制。
- 强大的资源管理: 可以管理各种类型的资源,包括CPU、内存、磁盘、GPU等。
- 高扩展性: 可以支持从小型集群到大型超级计算机的各种规模的HPC系统。
- 易于使用: 提供了友好的用户界面和命令行接口,方便用户进行配置和管理。
-
PBS Professional的应用场景:
- 科学计算: 物理模拟、化学计算、生物信息学等。
- 工程仿真: 结构分析、流体动力学仿真、有限元分析等。
- 大数据分析: 数据挖掘、机器学习、深度学习等。
-
为什么选择PBS Professional?
- 行业标准: PBS Professional是业界公认的HPC作业调度器,拥有广泛的用户基础。
- 成熟稳定:经过多年的发展和完善,PBS Professional具有很高的稳定性和可靠性。
- 功能强大: 提供了丰富的功能,可以满足各种HPC应用的需求。
- 易于集成: 可以与其他HPC软件和工具进行无缝集成。
PBS可以将你从完成工作的繁琐过程中解放出来;你不需要将每项任务交给正确的机器,不需要来回复制输入和输出,也不需要等待特定的机器可用。您只需为希望执行的任务指定要求,然后将任务交给 PBS。PBS 会保留每个任务,直到有空位为止,然后负责将输入文件复制到执行目录,执行任务,并将输出返回给你。
PBS会跟踪哪些硬件可用,以及所有等待和正在运行的任务。PBS 会将每个任务的要求与合适的硬件和时间段相匹配,并确保任务按照网站的策略运行。PBS 还能最大限度地提高使用率和吞吐量。
PBS 任务和组件
PBS 任务
PBS 是一个分布式工作负载管理系统。PBS 管理和监控一台或多台计算机的计算工作量。PBS 执行以下任务:
- 排队作业
PBS 收集要在一台或多台计算机上运行的作业(工作或任务)。用户向 PBS 提交作业,在 PBS 准备好运行作业之前,这些作业会被排队等候。
- 调度作业
PBS 根据作业要求的资源和站点管理员指定的策略,选择要运行的作业以及运行的时间和地点。PBS 允许管理员对作业进行优先排序,并以多种方式分配资源,以最大限度地提高效率和/或吞吐量。
- 监控作业
PBS 可跟踪系统资源、执行使用策略并报告使用情况。PBS 跟踪作业完成情况,确保作业在系统中断的情况下仍能运行。
- 返回输出
PBS 组件
PBS 由一系列命令和系统守护进程/服务组成,如图所示:
作业提交到 PBS 服务器。调度程序选择运行作业的时间和地点,服务器将作业发送到 MoM。PBS 命令与服务器通信。
服务器、调度程序和通信守护进程在服务器主机上运行。执行作业的机器称为执行主机。每个执行主机都运行一个 MoM守护进程。服务器主机可运行 MoM 守护进程。一台服务器可管理任意数量的MoM守护进程。命令可从服务器主机、执行主机和客户端的主机运行。我们把我们把服务器、调度程序、MoM 和通信守护进程的每个实例都称为PBS complex。
-
Commands
PBS 提供一组命令,可用于提交、监控、更改和删除作业。PBS 命令可安装在任何受支持的平台上,无论是否有其他 PBS 组件。有些 PBS 命令可以由任何 PBS 用户运行,有些则需要管理员或操作员权限。有些命令为管理员和操作员提供了扩展功能。 -
Job
PBS Job是一个任务,以 shell 脚本、cmd 批处理文件、Python 脚本等形式描述要运行的命令和/或应用程序。你把任务交给 PBS,它就变成了 PBS Job。 -
Server
PBS 服务器接收作业,保存等待执行的作业,在轮到执行时发送作业,并将作业发送给调度器。并通过监控综合系统的故障和在必要时重新运行作业来确保工作的完成。必要时重新运行作业,确保工作完成。即使命令会影响其他守护进程,它们也会与服务器通信。
- Scheduler
调度程序根据站点管理员指定的策略运行作业。调度程序将每个作业的要求与可用资源相匹配,并根据策略确定作业的优先级和分配资源。
PBS有一个默认的调度器;如果要分别调度各个分区,可以添加任意数量的额外调度器,称为多分区调度器。每个 PBS 调度器都遵循自己的调度策略。每个调度程序守护进程都执行由你定义的策略,该策略控制每个作业何时运行以及在哪些资源上运行。
- MoM(Master Node Manager)
MoM代表面向机器的小型服务器(Machine-oriented Mini-server)。
MoM负责管理发送到执行主机的任务。每个执行主机上的作业由一个MoM 管理。MoM将文件分阶段输入,运行准备,启动每个作业,监控作业,将文件分阶段输出并将输出结果返回给作业提交者,运行每个作业,返回给作业提交者,运行,并在作业结束后进行清理。MoM还可以运行钩子。
- 通信守护进程(Communication Daemon)
通信守护进程 pbs_comm 负责处理其他 PBS 守护进程之间的通信。
部署方式
- 单机版(不含前端)
- 双机版(带前端)
- 集群
参考资料
- 软件测试精品书籍文档下载持续更新 https://github.com/china-testing/python-testing-examples 请点赞,谢谢!
- 本文涉及的python测试开发库 谢谢点赞! https://github.com/china-testing/python_cn_resouce
- python精品书籍下载 https://github.com/china-testing/python_cn_resouce/blob/main/python_good_books.md
- Linux精品书籍下载 https://www.cnblogs.com/testing-/p/17438558.html
PBS 云
PBS Cloud 允许 PBS Professional 在云中新增节点(以下简称bursting),以便您的站点能够处理需求高峰。PBS Professional使用 Simulate 和两个名为 cloud_hook 和 cloud_ext_hook 的钩子来分析云队列中的作业、估算需求并指定实例类型和操作系统映像的所需云节点。PBS 调度器在云节点中运行云队列中的作业。PBS Cloud 会根据当前负载和节点等待作业出现的时间动态调整云节点的数量。
PBS Cloud 提供了云接口框架。PBS Cloud 支持多个云供应商以及私有OpenStack云。你可以同时使用多个供应商,并在每个供应商处使用多个账户。PBS Cloud 还支持按需、可抢占(GCP)、定点(AWS 和 Azure)和裸机的实例类型。PBS Cloud 支持使用 MPI 和高速网络(如 InfiniBand)的作业。
PBS 云需要 Simulate 来实现云bursting。Simulate 会计算需要bursting多少个节点,以及每次bursting时可以运行哪些作业。
PBS Cloud 可以处理多个 PBS Professional complex的云bursting,只要所有方案都有不同(唯一)的 API KEY。
云Cloud术语
- Burst
在云中创建节点并将其添加到 PBS complex的操作
- 云bursting钩子(主钩子)(Cloud bursting hook (main))
主云bursting钩子称为 “cloud_hook”,在安装 PBS Cloud 时安装。PBS 云bursting钩子通过 PBS Cloud 和云队列管理云节点和作业。您可以为钩子要处理的每个场景指定详细信息。主云bursting钩子处理所有实例的bursting,但裸机除外,裸机由扩展云bursting钩子处理。
- 云bursting钩子(扩展)(Cloud bursting hook (extension))
扩展云bursting钩子称为 “cloud_ext_hook”,是主云bursting钩子的修改版。扩展 PBS 云bursting钩子可处理裸机实例的bursting。
- 云节点(Cloud node)
在云硬件上创建的虚拟机或实例。每个云节点都使用为任务指定的操作系统镜像进行bursting。节点启动后,将通过云启动脚本对其进行初始化,并提供运行 PBS 作业所需的一切。
- 云队列(Cloud queue)
每个场景都使用自己的云队列。该场景的作业在此排队。云作业必须提交到相应的云队列。
- 头节点(Head node)
安装 PBS Professional 服务器/调度程序的节点。
- 实例类型(Instance type)
实例的规格,包括 CPU、内存、存储容量、网络技术等特性。PBS 云管理员指定作业提交者可使用的实例类型。
作业只能请求和使用管理员提供的实例类型。
PBS 云支持按需、可抢占(GCP)、定点(AWS 和 Azure)和裸机的实例类型。
- 操作系统映像(OS image)
云中预配置的操作系统映像,虚拟机可从该映像实例化。在供应商处,您可以创建一个操作系统映像,作为该供应商特定场景的默认设置。任务可以请求特定的操作系统映像,云bursting钩子可以为该场景指定默认的操作系统映像,您还可以为该场景的云队列设置默认的操作系统映像。
- 近似节点组(Proximate node group)
位于同一高速网络上的一组节点。例如,共享高速交换机的一组节点,例如,一个 Azure InfiniBand 规模集中的一组节点,或 Oracle 实例池中的一组节点。
-
场景(Scenario):bursting场景封装了bursting云节点所需的信息,如默认操作系统镜像和哪个云启动脚本应初始化云节点。您可在 PBS Cloud 中创建一个场景数据结构;您可在此指定 PBS Cloud 用burstingbursting的云供应商提供的资源信息。您可在相应的云bursting钩子中定义同一场景的其他方面。场景可使用一种或多种实例类型来bursting云节点,但有以下限制:
- 一个场景的所有实例类型必须是不可抢占的或可抢占的,但不能混合使用。
- 一个场景的所有实例类型必须是非裸机或裸机,但不能混合使用 您可以拥有任意多个场景。
-
服务节点(Service node)
安装 PBS 云模块的节点。 -
Simulate
PBS Professional 工作负载模拟工具。
- Unburst
从 PBS complex和云中移除节点的操作。
- 工作流
在云中bursting一个或多个节点的过程
PBS 云bursting的工作原理
节点bursting的工作原理
您在云供应商处创建一个管理员账户。PBS 云将使用该供应商管理员帐户。您为每个场景创建一个云队列,作业提交者为其云作业申请云队列。PBS 调度器在云节点中运行云作业。PBS Simulate 会分析云作业所需的资源,计算需要突增的节点数量和类型,以及需要运行的作业。
其中一个云bursting钩子会bursting节点:如果所需的节点不在裸机上,则主云bursting钩子会通过 PBS Cloud bursting所需的云节点;但如果所需的节点在裸机上,则扩展云bursting钩子会bursting节点。
每个钩子都尽可能使用现有节点,并在需要时bursting新节点。
下图显示了 PBS Professional、PBS Cloud、Simulate 和云提供商之间的关系。
分配给作业的操作系统映像和实例类型
特定作业使用的操作系统映像和实例类型取决于作业是否请求该映像和实例类型,或作业是否在运行 过程中继承了该映像和实例类型。
操作系统镜像和实例类型。操作系统镜像通过 cloud_node_image 资源指定,实例类型通过 cloud_node_instance_type 资源指定。分配按以下顺序进行,最先遇到的将被分配:
- 任务请求
- 队列默认值
- 云bursting钩子默认值
- PBS 云场景默认值
主云bursting钩子和扩展云bursting钩子
主云bursting钩子称为 “cloud_hook”,它会bursting任何非裸机实例。扩展云bursting钩子称为“cloud_ext_hook”,它会bursting任何裸机实例。除配置文件(和名称)外,这些钩子完全相同。所有非裸机实例都位于 cloud_hook 配置文件中定义的场景中。所有裸机实例都在 cloud_ext_hook 配置文件定义的场景中。
不能在同一场景中混合使用裸机和非裸机实例。不能在同一挂钩配置文件中混合使用裸机和非裸机场景。
跟踪应用程序许可证
在云中运行的作业可能需要应用程序许可证。只有当应用程序许可证可用时,PBS Cloud 才会为这些作业启动节点;否则,节点可能会闲置。
PBS Cloud 使用自定义的可消耗服务器级整数资源来跟踪每种应用许可的可用数量。云bursting钩子会在bursting云节点之前检查该资源的值,因此只有在需要应用许可的作业有可用许可时,才会为其bursting新节点。管理员创建一个脚本,通常作为 cron 作业运行,以尽可能保持该资源的最新状态。
将作业分发到云节点和本地节点
PBS 云的基本配置允许作业提交者为其作业请求云中的bursting节点,以替代请求本地节点。在基本配置下,云队列中的作业在云中运行,非云队列中的作业在本地运行。但是,您可能希望在作业运行位置上有更大的灵活性,您可以通过一些额外的配置来实现这一点:
- 如果企业内部有合适的资源,在企业内部运行驻留在云队列中的作业是合理的。运行作业的最低成本方式通常是在企业内部。
- 您可能希望在云中运行这些作业。您可以使用钩子检查非云队列中的作业并将其移动到合适的云队列中。
PBS Cloud 节点的许可
PBS Cloud 是 PBS Professional 的一部分,PBS Professional 使用的许可也适用于 PBS Cloud。例如,如果在 PBS Professional 中使用 PBSProNodes 许可,则在 PBS Cloud 中也使用该许可。同样,如果 PBS Professional 使用 PBSProSockets 许可,PBS Cloud 也使用该许可。
PBS 云的注意事项和限制
主云bursting钩子可在一次bursting中bursting多个作业所需的节点,只要这些作业不需要裸机实例。扩展云bursting钩子处理需要裸机实例的作业的bursting。这是因为在与非裸机混合时,对裸机的bursting会降低整体bursting率,令人无法接受。
Simulate简介
什么是Simulate?
通过模拟(Simulate),您可以在沙箱中安全地复制和测试您的网站和工作负载。 您可以捕获 然后在不影响生产系统的情况下检查和调整快照。 您可以模拟工作负载在不同条件下的运行情况。 模拟使用PBS调度器运行模拟工作负载。
您可以使用 “模拟 ”来检查您的配置是否满足业务需求,并找出如何满足您的 服务水平协议(SLA),也许可以通过增加内部部署或云计算资源、调整调度参数或更改其他配置参数来实现。 您还可以测试您的网站在工作负载发生变化和增加时的性能,以及您如何满足 SLA 要求。工作负载,以及如何满足这些不同的需求。
深入了解工作量
您可以深入了解您的工作量,评估您是否满足了客户的要求,是否与您的组织需求相协调。
您可以检查作业的运行顺序,并检查作业是否会运行、 您还可以检查如果更改系统配置和/或调度策略时是否允许作业运行。
您可以检查公式和公式中每个元素对每个作业的贡献,以了解作业优先级是如何计算的。作业优先级是如何计算的。 您还可以查看作业是如何归入等价类的,这样就可以适当调整站点配置。通过模拟,您可以了解复杂环境中工作负载与策略的交互情况。
调整站点配置
您可以安全地尝试调整配置,以优化利用率或吞吐量,或更好地满足您的服务水平协议。
您可以对 PBS 综合系统进行快照,修改快照以反映您要测试的变化,然后在修改后的快照上模拟 在修改后的快照上运行工作负载。 这样,您就可以测试如果对资源(如 CPU、CPU 和服务器数量)进行更改,您的站点将如何运行。资源(如 CPU 数量、内存数量、节点数量等)的性能。 例如,您可以测试 增加计算主机是否能满足您的需求,方法是模拟增加内部节点或云节点。 您还可以 还可以发现节点是否属于等价类。
调整调度参数
您可以尝试更改公式和其他调度参数,以更好地满足您的需求。
您还可以在模拟环境中测试保留将如何影响您的工作负载;您可以在保留中创建作业、作业状态和运行作业。
你的调度策略是你选择的一个或多个子目标的组合。例如,你可能需要满足两个特定的子目标:你可能需要以某种方式确定工作的优先级,你可能需要高效地使用资源。 您可以为每个子目标选择不同的结果。 例如,您可以选择根据大小、所有者、所有者的使用率、优先级、提交时间等调整。
- Job优先级和抢占
- 资源分配和限制
- 时隙分配
- Job放置优化
- 资源效率优化;
使用模拟的示例
- 满足紧急需求
您可能需要对特定用户的工作负载进行优先排序,以应对紧急情况。 您可以使用模拟来确保网站正确处理工作负载,并按照所需的顺序运行作业,以满足关键需求。
- 处理特殊工作负载
例如,您有配备 GPU 的主机,您需要确保在配备 GPU 的主机上立即运行任何 GPU 作业,同时在 GPU 作业之间继续在这些主机上运行其他作业。
Simulate 可让您在处理工作负载和优先级的重大变化时,保持利用率水平并最大限度地提高投资回报。
- 处理周末工作负载
您可能会在周末收到数量未知的工作,您需要确保周末工作优先运行。 例如,一辆在赛道上行驶的一级方程式赛车的车翼出现故障,设计团队需要证明这不是设计故障,而是撞击或制造错误。 您知道设计团队的工作量需要一项特殊政策来加快他们的工作进度。 这样,您就可以在接触生产系统之前,确保为设计团队制定的周末策略能够正确执行。
重要的是,您可以测试特殊政策与预期工作量之间的复杂交互是否会导致您无法满足 SLA。 您可以防患于未然。 例如,为了给予设计团队最高的优先级,我们为他们提供了一个快速队列,但服务器同时处理 3 个作业的限制仍然存在。 使用 “模拟 ”功能,您可以快速发现不良行为并解决问题。 通过沙箱环境,您可以快速测试和调整,直到满意为止。
- 计划系统停机时间 如果排队作业量较大,需要计划停机时间,可以使用 Simulate 计算运行所有排队作业(耗尽队列)需要多长时间。 这样,您就可以知道维护预约何时不会中断工作负载。
模拟术语
- 快照(Snapshot)
包含子目录和文件的目录,描述 PBS 系统及其工作负载,包括排队作业和运行中作业。 快照目录包括 pbs.conf、$PBS_HOME/server_priv 和 $PBS_HOME/sched_priv 目录及其内容的副本,以及其他目录的副本
- 基本(Primary snapshot )
运行模拟的快照。 通常是从实时 PBS 复杂系统中提取的快照,可以是原始快照,也可以是修改后的快照。
- 输出快照(Output snapshot)
运行模拟后产生的输出快照。
- 作业等价类(Job equivalence class)
具有相同提交者、资源请求和最终队列位置的一组作业
- 节点等价类(Node equivalence class)
具有相同可用资源的一组主机
- 发现命令(Discovery command)
用于发现作业、工作负载、配置等信息的命令。
仿真与真实环境之间的区别
- 您在 Simulate 中使用的 PBS 命令与标准 PBS 命令的实现略有不同,安装位置也不同。 在使用 simsh 封装脚本时,封装脚本会调用该命令的正确实现。 如果不使用封装脚本,则会在实时 PBS 复杂环境中运行。 模拟 "命令的设计目的是在快照(即一个目录)上运行,而不是在实时 PBS 综合系统上运行。
- 有些命令选项在处理快照时没有意义。 在使用快照时,请记住您是在对文件而不是实时 PBS 实例进行操作。 例如,如果您尝试使用 tracejob -p
,那么您是在尝试使用 PBS_HOME 的不同路径运行 tracejob,但用于模拟的 tracejob 的实现设计为使用快照中的目录。 - 钩子不会在模拟中运行。 例如,queuejob 钩子不会运行,因此在快照之前排队的作业已经被任何 queuejob 钩子修改过,但如果在模拟中提交新作业,这些修改将不会发生。 要在沙箱中模拟钩子的行为,可以提交钩子修改后的作业。
- 预算工具不能在模拟中运行,也不能对预算工具进行快照。
- 云功能不在模拟中运行。 。
- 只能捕捉 Linux 系统的快照。
- 模拟忽略作业环境变量:不使用作业的 Variable_List 属性值。
- 不能创建特定于作业的 ASAP 保留或特定于作业的 now 保留。
- 模拟只使用默认调度程序。
- 模拟中不能包含历史作业。 (Altair Control 中的模拟工具提供了这一功能)。
- 在仿真中添加执行主机的方法不同;
- qmgr 命令不提供交互模式 (qmgr
)。 请使用 simsh <快照路径> qmgr -c “...” 代替。 - 模拟不会运行作业可执行文件。
- 在模拟中,作业使用的是请求的时间,而不是作业实际(模拟)花费的时间。
- Simulate 不使用路由队列。 如果您捕获了路由队列中作业的实时系统快照,或在快照中向路由队列提交了作业,这些作业不会在模拟中运行。
- 模拟中不提供动态资源。
- Simulate 不支持对等调度