SLURM sacct 显示 'batch' 和 'extern' 作业名称
SLURM sacct shows 'batch' and 'extern' job names
我已将作业提交到 SLURM 队列,该作业已 运行 并已完成。然后我使用 sacct
命令检查完成的作业。但是查看 sacct 命令的结果,我注意到我没有预料到的其他结果:
JobID JobName State NCPUS Timelimit
5297048 test COMPLETED 1 00:10:00
5297048.bat+ batch COMPLETED 1
5297048.ext+ extern COMPLETED 1
谁能解释一下 'batch' 和 'extern' 作业是什么以及它们的目的是什么。为什么外部作业总是在主作业失败时完成。
我试图搜索文档,但没有找到令人满意的完整答案。
编辑:这是我提交的用于生成上述 sacct
输出的脚本:
#!/bin/bash
echo test_script > done.txt
使用以下 sbatch
命令:
sbatch -A BRIDGE-CORE-SL2-CPU --nodes=1 --ntasks=1 -p skylake --cpus-per-task 1 -J jobname -t 00:10:00 --output=./output.out --error=./error.err < test.sh
一个作业由多个作业步骤组成。每个作业步骤都是独立显示的。在您的输出中,您有 $JOBID,它代表整体预订,$JOBID.batch,它代表您提交的主脚本。
关于 external
...我不确定,但我猜你开始了一个工作步骤并将其命名为 "external"。在那种情况下,这就是该作业步骤的信息。
如果您向我们展示您提交的脚本,我们可以澄清一些问题。
一个 Slurm 作业包含多个作业步骤,它们全部由 Slurm 单独计算(在资源使用方面)。通常,这些步骤是使用 srun/mpirun 创建的,并从 0 开始枚举。但除此之外,有时还有两个特殊步骤。例如,接受以下工作:
sbatch -n 4 --wrap="srun hostname; srun echo Hello World"
这导致了以下 sacct 输出:
JobID JobName Partition Account AllocCPUS State ExitCode
------------ ---------- ---------- ---------- ---------- ---------- --------
5163571 wrap medium admin 4 COMPLETED 0:0
5163571.bat+ batch admin 4 COMPLETED 0:0
5163571.ext+ extern admin 4 COMPLETED 0:0
5163571.0 hostname admin 4 COMPLETED 0:0
5163571.1 echo admin 4 COMPLETED 0:0
两个 srun
调用创建了步骤 5163571.0
和 5163571.1
。 5163571.bat+
说明批处理脚本所需的资源(在本例中只是 srun hostname; srun echo Hello World
。--wrap
只是将其放入文件并添加 #!/bin/sh
)。
许多 non-MPI 程序在批处理步骤中进行大量计算,因此会计算资源使用情况。
现在 5163571.ext+
:此步骤说明了该作业在 slurm 之外使用的所有资源。这仅在使用 PrologFlag contain
时显示。
属于 slurm 作业但不受 slurm 直接控制的进程的一个示例是 ssh 会话。如果您通过 ssh 进入您的一个作业运行的节点,您的会话将被置于该作业的上下文中(并且您将被 cgroups 限制为您的可用资源,如果已设置)。您在该 ssh 会话中所做的所有计算都将在 .extern 作业步骤中进行说明。
我已将作业提交到 SLURM 队列,该作业已 运行 并已完成。然后我使用 sacct
命令检查完成的作业。但是查看 sacct 命令的结果,我注意到我没有预料到的其他结果:
JobID JobName State NCPUS Timelimit
5297048 test COMPLETED 1 00:10:00
5297048.bat+ batch COMPLETED 1
5297048.ext+ extern COMPLETED 1
谁能解释一下 'batch' 和 'extern' 作业是什么以及它们的目的是什么。为什么外部作业总是在主作业失败时完成。
我试图搜索文档,但没有找到令人满意的完整答案。
编辑:这是我提交的用于生成上述 sacct
输出的脚本:
#!/bin/bash
echo test_script > done.txt
使用以下 sbatch
命令:
sbatch -A BRIDGE-CORE-SL2-CPU --nodes=1 --ntasks=1 -p skylake --cpus-per-task 1 -J jobname -t 00:10:00 --output=./output.out --error=./error.err < test.sh
一个作业由多个作业步骤组成。每个作业步骤都是独立显示的。在您的输出中,您有 $JOBID,它代表整体预订,$JOBID.batch,它代表您提交的主脚本。
关于 external
...我不确定,但我猜你开始了一个工作步骤并将其命名为 "external"。在那种情况下,这就是该作业步骤的信息。
如果您向我们展示您提交的脚本,我们可以澄清一些问题。
一个 Slurm 作业包含多个作业步骤,它们全部由 Slurm 单独计算(在资源使用方面)。通常,这些步骤是使用 srun/mpirun 创建的,并从 0 开始枚举。但除此之外,有时还有两个特殊步骤。例如,接受以下工作:
sbatch -n 4 --wrap="srun hostname; srun echo Hello World"
这导致了以下 sacct 输出:
JobID JobName Partition Account AllocCPUS State ExitCode
------------ ---------- ---------- ---------- ---------- ---------- --------
5163571 wrap medium admin 4 COMPLETED 0:0
5163571.bat+ batch admin 4 COMPLETED 0:0
5163571.ext+ extern admin 4 COMPLETED 0:0
5163571.0 hostname admin 4 COMPLETED 0:0
5163571.1 echo admin 4 COMPLETED 0:0
两个 srun
调用创建了步骤 5163571.0
和 5163571.1
。 5163571.bat+
说明批处理脚本所需的资源(在本例中只是 srun hostname; srun echo Hello World
。--wrap
只是将其放入文件并添加 #!/bin/sh
)。
许多 non-MPI 程序在批处理步骤中进行大量计算,因此会计算资源使用情况。
现在 5163571.ext+
:此步骤说明了该作业在 slurm 之外使用的所有资源。这仅在使用 PrologFlag contain
时显示。
属于 slurm 作业但不受 slurm 直接控制的进程的一个示例是 ssh 会话。如果您通过 ssh 进入您的一个作业运行的节点,您的会话将被置于该作业的上下文中(并且您将被 cgroups 限制为您的可用资源,如果已设置)。您在该 ssh 会话中所做的所有计算都将在 .extern 作业步骤中进行说明。