如何使用SLURM统计用户自创建以来的总资源使用量
统计SLURM中指定用户的总资源使用量
方法1:用sacct自定义汇总(灵活可控)
sacct是SLURM原生的作业查询工具,可拉取用户所有历史作业并通过脚本批量汇总资源。替换<用户名>执行以下命令:
sacct -u <用户名> --starttime 0000-00-00 --endtime now --format=User,JobID,CPUTime,AllocCPUs,AllocMem,MaxRSS --parsable2 | awk -F'|' ' function elapsed_to_hours(str) { split(str, parts, /[-:]/) days = parts[1] + 0 hours = parts[2] + 0 mins = parts[3] + 0 secs = parts[4] + 0 return days*24 + hours + mins/60 + secs/3600 } NR>1 { cpu_time_total += $3 core_hours += $4 * elapsed_to_hours($3) alloc_mem_total += $5 max_rss_total += $6 } END { print "=== 总资源使用统计 ===" print "总CPU时间(格式DD-HH:MM:SS): " cpu_time_total print "总CPU核心小时数: " sprintf("%.2f", core_hours) print "总分配内存(MB,单作业累加): " alloc_mem_total print "总最大驻留内存(MB,单作业峰值累加): " max_rss_total }'
--starttime 0000-00-00:从集群最早记录开始查询,覆盖用户创建以来的所有作业--format:可按需添加AllocGRES(GPU分配)、NodeList等字段扩展统计维度awk脚本:将作业运行时间转成小时,计算核心小时数这类更直观的统计值
方法2:用sreport生成标准化报告(简洁高效)
sreport是SLURM的专用报告工具,直接输出用户资源使用的汇总结果:
sreport user top <用户名> start=0000-00-00 end=now -t hour --tres=cpu,mem,gpu
-t hour:以小时为单位统计资源--tres:指定统计资源类型,cpu对应核心小时,mem对应内存GB小时,gpu对应GPU核心小时(需集群支持GPU记账)
注意事项
- 历史作业数据保留期限由SLURM管理员配置,若老作业无法查询,需确认
slurm.conf中的AccountingStorageEnforce等参数 - 普通用户仅能查询自身作业,管理员可添加
-A <账户名>或省略-u查询整个账户/集群的资源使用 - 若需统计节点使用小时数,可在
sacct的--format中添加AllocNodes,Elapsed,并在awk中计算节点数 × 运行小时数
内容的提问来源于stack exchange,提问作者iury simoes-sousa
相关产品推荐
相关产品推荐

