前言
在高性能计算领域,我们经常需要使用集群系统、超级计算机和大规模并行系统来处理大量的计算任务。为了管理和调度这些计算任务,我们需要使用一种作业管理系统,来分配和控制计算资源,提高计算效率和性能。本文就介绍了一种广泛使用的作业管理系统——pbs系统,它的由来、特点、命令和脚本。
一、pbs系统是什么?
pbs系统(Portable Batch System)最初由NASA的Ames研究中心开发,主要为了提供一个能满足异构计算网络需要的软件包,用于灵活的批处理,特别是满足高性能计算的需要。pbs系统由三个主要组件构成:pbs server、pbs scheduler和pbs mom。pbs server是作业管理系统的核心,负责接收、分配和监控作业;pbs scheduler是作业调度器,负责根据作业的优先级、资源需求和可用资源,为作业选择合适的计算节点;pbs mom是计算节点上的代理,负责执行、监控和报告作业的状态。
二、pbs系统的主要特点
pbs系统具有以下几个主要特点:
- 代码开放,免费获取;pbs系统的源代码可以在网上免费下载,用户可以根据自己的需要修改和定制。
- 支持批处理、交互式作业和串行、多种并行作业,如MPI、PVM、HPF、MPL;pbs系统可以处理不同类型的作业,无论是批量执行的还是交互式的,无论是串行的还是并行的,都可以通过pbs系统提交、运行和管理。
- pbs系统是功能最为齐全, 历史最悠久, 支持最广泛的本地集群调度器之一;pbs系统已经有二十多年的发展历史,经过了多次的改进和优化,具有很强的稳定性和可靠性,同时也支持多种操作系统和硬件平台,可以适应不同的计算环境。
三、pbs系统的常用命令
pbs系统提供了一系列的命令,用于作业的提交、查询、删除、挂起和释放等操作。下面介绍一些常用的命令:
- qsub:用于提交作业脚本,可以指定作业的名称、资源需求、输出路径、邮件通知等选项。例如,
qsub -N test -l nodes=1:ppn=4 -o output.txt job.sh
表示提交一个名为test的作业,请求一个节点,每个节点4个处理器,将标准输出重定向到output.txt,执行job.sh脚本。
- qstat:用于查询作业的状态信息,可以查看作业的编号、名称、队列、优先级、运行时间、状态等信息,也可以查看队列的状态和节点的状态。例如,
qstat -a
表示查看所有作业的详细信息,
qstat -q
表示查看所有队列的状态,
qstat -n
表示查看作业所分配的节点。
- qdel:用于删除已提交的作业,可以指定作业的编号或者队列,也可以指定延迟时间。例如,
qdel 1234
表示删除编号为1234的作业,
qdel -a
表示删除所有作业,
qdel -W 60 1234
表示在60秒后删除编号为1234的作业。
- qhold:用于挂起作业,使其不被调度执行,可以指定作业的编号或者队列。例如,
qhold 1234
表示挂起编号为1234的作业,
qhold -a
表示挂起所有作业。
- qrls:用于释放挂起的作业,使其可以被调度执行,可以指定作业的编号或者队列。例如,
qrls 1234
表示释放编号为1234的作业,
qrls -a
表示释放所有作业。
- qrerun:用于重新运行作业,可以指定作业的编号或者队列,也可以指定延迟时间。例如,
qrerun 1234
表示重新运行编号为1234的作业,
qrerun -a
表示重新运行所有作业,
qrerun -W 60 1234
表示在60秒后重新运行编号为1234的作业。
- qmove:用于将作业移动到另一个队列,可以指定作业的编号或者队列,也可以指定目标队列的名称。例如,
qmove 1234 queue1
表示将编号为1234的作业移动到queue1队列,
qmove -a queue2
表示将所有作业移动到queue2队列。
四、pbs系统的作业脚本
pbs系统的作业脚本由两部分组成:脚本选项和运行脚本。脚本选项用于指定作业的属性和资源需求,以#PBS开头的行被解释为qsub的命令选项;运行脚本用于指定作业的执行命令和参数,与Linux下的一般运行脚本相同。下面是一个简单的作业脚本的示例:
#!/bin/bash
#PBS -N test
#PBS -l nodes=1:ppn=4
#PBS -l walltime=00:10:00
#PBS -o output.txt
#PBS -e error.txt
cd $PBS_O_WORKDIR
mpirun -np 4 ./a.out
这个作业脚本的含义是:提交一个名为test的作业,请求一个节点,每个节点4个处理器,最长运行时间为10分钟,将标准输出重定向到output.txt,将标准错误重定向到error.txt,进入提交作业的目录,运行可执行文件a.out。
总结
以上就是今天要讲的内容,本文简要介绍了pbs系统的概念、特点、命令和脚本,希望对你有所帮助。pbs系统是一种强大的作业管理系统,可以帮助我们高效地利用计算资源,完成各种计算任务。