pbs用户手册1PBS 入门

1 PBS 入门

PBS 将您从完成工作的繁琐过程中解脱出来;您不需要将每项任务交给正确的机器,不需要来回复制输入和输出,也不需要等待特定的机器可用。你只需指定需要执行的任务要求,然后将任务交给 PBS 即可。PBS 会保留每个任务,直到有空位为止,然后负责将输入文件复制到执行目录,执行任务,并将输出返回给你。
PBS 会跟踪哪些硬件可用,以及所有等待和正在运行的任务。PBS 会将每个任务的要求与合适的硬件和时间段相匹配,并确保任务按照网站的策略运行。PBS 还能最大限度地提高使用率和吞吐量。

1.2 PBS任务和组件

PBS 是一个分布式工作负载管理系统(distributed workload management system)。PBS 管理和监控一台或多台计算机的计算工作量。PBS 有以下功能:

  • 排队作业

PBS 收集要在一台或多台计算机上运行的作业(工作或任务)。用户向 PBS 提交作业,在 PBS 准备好运行作业之前,作业会被排队等候。

  • 调度作业

PBS 根据作业要求的资源和站点管理员指定的策略,选择要运行的作业以及运行的时间和地点。PBS 允许管理员对作业进行优先排序,并以多种方式分配资源,以最大限度地提高效率和/或吞吐量。

  • 监控作业

PBS 可跟踪系统资源、执行使用策略并报告使用情况。PBS 可跟踪作业完成情况,确保作业在系统中断的情况下仍能运行。

  • 返回输出

PBS 会将作业输出返回到您指定的位置。

1.2.2 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 守护进程之间的通信。

1.3 PBS 接口

PBS 提供命令行接口,Altair 提供基于 Web 的 PBS 前端,称为 Access,这是一个单独的产品。本文档介绍 PBS 命令行接口。有关 Access 的信息,请参阅 www.altair.com。

1.3.1 PBS 命令

PBS 提供一组命令,允许您提交、监控和管理您的作业。某些 PBS 命令可由任何 PBS 用户使用;某些命令只能由管理员使用,某些命令的行为取决于调用者的角色。在本文档中,我们描述了任何 PBS 用户都可以使用的命令。

命令 操作
mpiexec 在 Linux 上的 PBS 下运行 MPI 程序
pbsdsh 将任务分发到 PBS 下的 vnode
pbsnodes 查询 PBS 主机或 vnode 状态,将主机标记为空闲或离线,更改主机的注释或输出 vnode 信息
pbs_attach 将会话 ID 附加到 PBS 作业
pbs_hostn 报告主机名和网络地址
pbs_login 缓存加密的用户密码以进行身份​​验证
pbs_mpihp 使用 HP MPI 在 PBS 作业中运行 MPI 应用程序
pbs_mpirun 使用 MPICH 在 PBS 下运行 MPI 程序
pbs_python 用于从命令行调试钩子脚本的 Python 解释器
pbs_ralter 修改现有的预付款、常备或特定于作业的预留
pbs_rdel 删除 PBS 预付款、常备或特定于作业的预留
pbs_release_nodes 释放姐妹节点分配给 PBS 作业的主机或 vnode
pbs_rstat 显示 PBS 提前、常设或特定于作业的预留的状态
pbs_rsub 创建 PBS 提前、常设或特定于作业的预留
pbs_tclsh 已弃用。带有 TCL 包装的 PBS API 的 TCL shell
pbs_tmrsh TM启用的 rsh/ssh 替代品,供 MPI 实现使用
pbs_wish 已弃用。带有 TCL 包装的 PBS API 的 TK 窗口 shell
qalter 更改 PBS 作业
qdel 删除 PBS 作业
qhold 保存 PBS 批量作业
qmgr 管理员管理 PBS 的命令界面
qmove 将 PBS 作业从一个队列移到另一个队列
qmsg 将消息字符串写入一个或多个作业输出文件
qorder 交换两个 PBS 作业的队列位置
qrls 释放 PBS 作业的搁置
qsig 选择指定的 PBS 作业
qsig 向 PBS 作业发送信号
qstat 显示 PBS 作业、队列或服务器的状态
qsub 向 PBS 提交作业

1.4 设置环境

1.4.1 帐户的先决条件(略)

1.4.2 设置 Linux 环境

1.4.2.1 设置 PBS 命令的路径

PBS 命令位于 $PBS_EXEC/bin 指向的目录中。在安装 PBS 后,该路径可能会发生变化。因此请使用变量而不是绝对路径。$PBS_EXEC 的位置在 /etc/pbs.conf 中给出。

$ . /etc/pbs.conf

或者将 PBS 命令的路径添加到 PATH 环境变量中:

export PATH=$PATH:$PBS_EXEC/bin/

1.4.2.2 设置 PBS 手册的路径

export MANPATH=/usr/man:/usr/local/man:$PBS_EXEC/share/man/

1.4.2.3 使作业的登录和注销文件表现正常

默认情况下,PBS 会在登录状态下运行作业,这意味着每个作业都会使用登录和注销文件。如果您的.cshrc、.login、.profile 或 .logout 文件包含试图设置终端特性或产生输出(如写入 stdout)的命令,作业可能无法运行。确保在 PBS 作业中运行文件时跳过这些文件中的任何此类命令。PBS 会在作业中设置 PBS_ENVIRONMENT 环境变量。测试 PBS_ENVIRONMENT 环境变量,只有在未设置该变量时才运行命令。例如,在 .login 文件中:

if ( ! $?PBS_ENVIRONMENT ) then
    do terminal settings here
    run command with output here
endif

1.4.2.4 捕获正确的作业退出状态

PBS 作业运行时,作业 shell 会将作业中最后执行的命令的退出状态报告给 PBS,作为作业的退出状态。作业的退出状态对于作业依赖关系和作业链非常重要。在 Linux 下,如果执行主机上有 .logout,最后执行的命令可能不是作业中的最后一条命令。在这种情况下,最后执行的命令来自 .logout 而不是作业。为避免出现这种情况,可将作业的退出状态保存在 .logout 文件中,将其保存在文件顶部,然后在文件末尾执行明确的退出操作,如下所示:

set EXITVAL = $status
previous contents of .logout here
exit $EXITVAL

在 Windows 下,无需采取特殊步骤来保留作业的退出状态。

1.4.2.5 避免在作业中运行后台进程

确保在 PBS 作业中调用登录文件时不会在后台运行进程。如果登录文件包含一个在 PBS 作业内部后台运行的命令,那么持续进程就会带来麻烦。

1.4.2.6 为作业提供 bash 函数

如果作业需要使用导出的 bash 函数,可以将这些函数放在执行主机上的 .profile 或 .login 文件中。也可以使用 qsub -V 或 qsub -v <函数名> 在作业提交时转发函数。使用 -v 或 -V 时,请确保没有与环境变量同名的函数。

1.4.2.7 Linux 下的用户授权

服务器的 flatuid 属性决定了它是否假定相同的用户名代表相同的用户。如果为 True,则 则假定如果 User1 同时存在于提交主机和服务器主机上,则 User1 可以在该服务器上运行作业。如果 则服务器会调用 ruserok(),使用 /etc/hosts.equiv 或 .rhosts 授权 User1 以 运行。在这种情况下,使用 -u 选项指定的用户名必须在服务器主机上有一个 .rhosts 文件,其中列出了 也就是说,服务器上的 User1 必须有一个列有 User1 的 .rhosts 文件。

例 1-1:我们的用户在提交主机上是 UserA,但在服务器上是 userB。要以用户 A 的身份提交作业,并以用户 B 的身份 运行作业,UserB 必须在服务器主机上有一个列出 UserA 的 .rhosts 文件。请注意,如果通过 -u 选项列出了不同的名称,那么无论 flatuid 的值如何,都会对它们进行检查。
不建议使用 hosts.equiv。

1.4.2.8 从 Linux 客户端提交 Linux 作业

如果 Linux 客户端主机的身份验证方法已设置为 pwd,请在提交 Linux 作业前将其设置为 munge。

export PBS_AUTH_METHOD=munge; qsub -lselect=1:arch=linux -- sleep 100 

1.4.3 设置Windows环境(略)

1.4.4 为提交主机设置时区

确保提交主机的环境变量 PBS_TZID 设置正确。将此环境变量设置为 PBS Professional 所知道的时区位置。您可以从 PBS 服务器主机获取相应的时区位置。
在 Linux 平台上,如果有 tzselect 命令,请使用该命令,或者从 /usr/share/zoneinfo/zone.tab 获取时区位置。
在所有其他平台上,请使用 $PBS_EXEC/lib/ical/zoneinfo/zones.tab 下的 libical 支持的 zoneinfo 位置列表。
PBS_TZID 的格式是时区位置,而不是时区 POSIX 缩写。PBS_TZID 的值举例如下:

America/Los_Angeles
America/Detroit
Europe/Berlin
Asia/Calcutta
posted @   磁石空杯  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek-R1本地部署如何选择适合你的版本?看这里
· 开源的 DeepSeek-R1「GitHub 热点速览」
· 传国玉玺易主,ai.com竟然跳转到国产AI
· 揭秘 Sdcb Chats 如何解析 DeepSeek-R1 思维链
· 自己如何在本地电脑从零搭建DeepSeek!手把手教学,快来看看! (建议收藏)
点击右上角即可分享
微信分享提示