slurm - SLURM sacct 显示“批处理”和“外部”作业名称
问题描述
我已将作业提交到 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
谁能解释一下“批处理”和“外部”工作是什么以及它们的目的是什么。为什么即使主作业失败,外部作业也总是完成。
我试图搜索文档,但没有找到令人满意和完整的答案。
编辑:这是我提交以产生上述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
解决方案
一个 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
)。
许多非 MPI 程序在批处理步骤中进行大量计算,因此资源使用量在那里计算。
现在是5163571.ext+
:这一步说明了该作业在 slurm 之外的所有资源使用情况。这仅在使用PrologFlag contain
时显示。
属于 slurm 作业但不受 slurm 直接控制的进程的一个示例是 ssh 会话。如果您 ssh 进入运行您的作业之一的节点,您的会话将被放置到作业的上下文中(如果已设置,您将被 cgroups 限制为可用资源)。您在该 ssh 会话中所做的所有计算都将在 .extern 作业步骤中进行说明。
推荐阅读
- arrays - C - 将一维数组设为二维
- python - Python多串口减慢Linux上的USB速度
- firebase - 是否可以使用安全规则仅授予用户访问在 Firestore 中以其 uid 命名的文档的权限?
- javascript - JavaScript Chart.JS - 将图表保持在两行中,而不是将所有内容堆叠成一列
- java - 无法在appium上运行基本程序
- java - Selenium Java:侧栏菜单导航->无法选择无序列表菜单项
- r - 从使用 2 个不同几何图形创建的 ggplot 图例中删除某些值
- java - 从命令提示符运行时,LeanFT 无法找到窗口或屏幕 - Terminal Emulator IBM Application
- android - 如何从 NavigationView 向片段添加选项菜单
- regex - 特定字符串的正则表达式,后跟一个数字