我使用slurm
在集群上运行作业。我想获取有关该工作的统计信息,例如使用的内存,处理器数量和停工时间。我想在日志文件中获取此类信息。我认为使用LSF
可以做到这一点(如果我没记错的话,并且不会与其他平台混淆)。
答案 0 :(得分:1)
您可以从Slurm数据库中获取此信息,请参见https://slurm.schedmd.com/sacct.html或Find out the CPU time and memory usage of a slurm job。例如。 sacct --jobs=12345 --format=NCPUS,MaxRSS,CPUTime
。
注意:您可以将其添加到Epilog脚本中。这是epilog.srun
的示例:
#!/bin/sh
TMPDIR="/local"
# Append job usage info to job stdout
stdoutfname=`scontrol show job ${SLURM_JOB_ID} --details | grep "StdOut=" | sed -e 's/.*StdOut=\([^\s][^\s]*\)/\1/'`
if [ -w "${stdoutfname}" ] && [ "${QTMPDIR}" != "" ]; then
sacct --format JobID,jobname,AveCPUFreq,AveDiskRead,AveRSS,cputime,MaxDiskWrite -j ${SLURM_JOB_ID} >> ${stdoutfname}
或者,您可以在脚本内部使用/usr/bin/time -v <your command>
(具有time
的完整路径,请参见https://stackoverflow.com/a/774601/6352677)。这将在日志中,但与Slurm的会计值不完全匹配。