qsub 是一种常用的作业提交命令,通常在使用诸如 PBS(Portable Batch System)或 SGE(Sun Grid Engine)等集群管理系统时使用。以下是关于 qsub 的详细解释:
一、基本功能
qsub 主要用于将作业提交到集群的作业队列中,以便集群系统安排该作业在适当的计算节点上运行。当你使用 qsub 提交作业时,你需要提供一个脚本或命令,集群系统会根据资源可用性和调度策略来执行该作业。
二、常用选项
-N <jobname>:为作业指定一个名称,方便后续管理和识别作业。bash
qsub -N my_job script.sh-l <resource_list>:指定作业所需的资源,例如处理器数量、内存大小、运行时间等。bash
qsub -l nodes=1:ppn=4,mem=8gb,walltime=1:00:00 script.sh
这表示该作业需要 1 个节点,每个节点使用 4 个处理器,需要 8GB 内存,最长运行时间为 1 小时。-q <queue>:指定作业提交到哪个队列中。不同队列可能有不同的资源限制和调度策略。bash
qsub -q batch script.sh-o <output_file>和-e <error_file>:分别指定作业的标准输出和标准错误输出的文件。bash
qsub -o output.log -e error.log script.sh
三、提交脚本示例
假设你有一个名为 my_script.sh 的脚本,内容如下:
bash
#!/bin/bash
echo "Hello, this is my script running on the cluster"
sleep 30
echo "Script completed"
你可以使用 qsub 命令提交该脚本:
bash
qsub my_script.sh
四、使用 qsub 提交更复杂的任务
如果你需要在作业中使用特定的软件环境或模块,可以在脚本中加载所需的模块。例如,在使用一个需要 Python 环境的作业时:
bash
#!/bin/bash
#PBS -N python_job
#PBS -l nodes=1:ppn=1,mem=2gb,walltime=0:10:00
#PBS -o python_job_output.log
#PBS -e python_job_error.log
module load python/3.8 # 加载 Python 3.8 模块
python my_python_script.py
使用 qsub 提交这个脚本:
bash
qsub python_job.sh
五、查看作业状态
在提交作业后,你可以使用 qstat 命令查看作业的状态:
bash
qstat
它会显示作业的状态,如等待(Q)、运行(R)或完成(C)等信息,以及作业的资源使用情况等。
六、作业删除
如果你想删除一个已提交但尚未运行的作业,可以使用 qdel 命令,通常需要作业的作业号,该作业号在使用 qsub 提交作业后会显示,也可以通过 qstat 查看:
bash
qdel <job_id>
七、资源限制和调度策略
不同的集群系统可能对 qsub 的选项和资源限制有所不同,以下是一些常见的限制和考虑因素:
- 处理器数量(ppn):每个节点可使用的处理器核心数,要根据节点的硬件配置和集群策略合理申请。
- 内存(mem):申请的内存大小应根据作业的实际需求,申请过多会浪费资源,申请过少可能导致作业失败。
- 运行时间(walltime):估计作业所需的运行时间,超过申请的运行时间会导致作业被强制终止。
使用 qsub 可以方便地将作业提交到集群系统中,让集群系统自动调度和管理计算资源,提高计算效率,尤其是对于需要大量计算资源或长时间运行的任务。在使用 qsub 之前,需要熟悉所在集群的相关文档和政策,以确保合理使用资源并避免不必要的作业失败。
458

被折叠的 条评论
为什么被折叠?



