You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SLURM集群中如何获取当前已完成作业的内存使用情况?

解决SLURM数组作业内存使用统计问题

问题根源

你之前执行sacct时未指定当前作业的唯一ID,导致命令默认返回最近完成的作业数据,而非刚结束的当前数组任务。

解决方案1:精准定位当前作业执行sacct

在sacct命令中添加-j $SLURM_JOB_ID参数,直接指定当前任务的JobID(SLURM会自动为每个数组子任务分配唯一的SLURM_JOB_ID环境变量)。同时可添加短延迟确保SLURM数据库同步,避免查询不到数据。

修改后的sacct命令如下:

sleep 2
sacct -j $SLURM_JOB_ID --format=jobid,MaxRSS,MaxVMSize,start,end,CPUTimeRAW,NodeList

解决方案2:使用更简洁的seff命令

SLURM提供的seff命令专门用于查看单个作业的资源使用情况,输出更直观,无需复杂格式参数,直接执行:

seff $SLURM_JOB_ID

它会返回内存利用率、CPU利用率、作业状态等关键信息,其中Max RSS就是实际使用的最大内存。

修改后的完整作业脚本

#!/bin/bash

#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --mem=100G
#SBATCH --time=12:00:00
#SBATCH --error=slurm.%A_%a.err
#SBATCH --output=slurm.%A_%a.out   # %A becomes the job ID, %a becomes the array index

#SBATCH --mail-type=END,FAIL
#SBATCH --mail-user=m@uni.de
module purge
module load hpc
if [ "$mdepth" == "" ]
then
mdepth=3
fi
echo "config:"$SLURM_ARRAY_JOB_ID","$SLURM_ARRAY_TASK_ID","$file","$solver
{ time ./ista --max-depth $mdepth --i $file | tee SomeFile.txt; } 2>&1

# 方案1:带延迟的精准sacct查询
sleep 2
sacct -j $SLURM_JOB_ID --format=jobid,MaxRSS,MaxVMSize,start,end,CPUTimeRAW,NodeList

# 方案2:如果更偏好简洁输出,可替换为下面的seff命令
# seff $SLURM_JOB_ID

内容的提问来源于stack exchange,提问作者ELI

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 22:05:16