我正在使用SLURM调度系统的大学集群(常规用户,无管理员权限)上运行作业,并且我对随着时间推移(即作业运行时)绘制CPU和内存使用情况感兴趣。我知道sacctsstat,因此我想将这些命令包含在我的提交脚本中,例如符合

#!/bin/bash
#SBATCH <options>

# Running the actual job in background
srun my_program input.in output.out &

# While loop that records resources
JobStatus="$(sacct -j $SLURM_JOB_ID | awk 'FNR == 3 {print $6}')"
FIRST=0
#sleep time in seconds
STIME=15
while [ "$JobStatus" != "COMPLETED" ]; do
    #update job status
    JobStatus="$(sacct -j $SLURM_JOB_ID | awk 'FNR == 3 {print $6}')"
    if [ "$JobStatus" == "RUNNING" ]; then
        if [ $FIRST -eq 0 ]; then
            sstat --format=AveCPU,AveRSS,MaxRSS -P -j ${SLURM_JOB_ID} >> usage.txt
            FIRST=1
        else
            sstat --format=AveCPU,AveRSS,MaxRSS -P --noheader -j ${SLURM_JOB_ID} >> usage.txt
        fi
        sleep $STIME
    elif [ "$JobStatus" == "PENDING" ]; then
        sleep $STIME
    else
        sacct -j ${SLURM_JOB_ID} --format=AllocCPUS,ReqMem,MaxRSS,AveRSS,AveDiskRead,AveDiskWrite,ReqCPUS,AllocCPUs,NTasks,Elapsed,State >> usage.txt
        JobStatus="COMPLETED"
        break
    fi
done

但是,我对这种解决方案并不十分信服:
  • sstat不幸的是没有显示
    力矩(仅平均值)
  • 如果我尝试记录一段时间内的内存使用情况,那么
  • MaxRSS也无济于事
  • 似乎仍然有些错误(作业完成后脚本不会停止)

  • 有谁知道如何正确地做到这一点?甚至可以用tophtop代替sstat吗?任何帮助深表感谢。

    最佳答案

    Slurm提供了一个插件来将作业的配置文件(某些技术的PCU使用率,内存使用率,甚至磁盘/网络IO)记录到HDF5文件中。该文件包含每个跟踪度量的时间序列,您可以选择时间分辨率。
    您可以使用

    #SBATCH --profile=<all|none|[energy[,|task[,|filesystem[,|network]]]]>
    
    请参阅文档here
    要检查是否已安装此插件,请运行
    scontrol show config | grep AcctGatherProfileType
    
    它应该输出AcctGatherProfileType = acct_gather_profile/hdf5
    这些文件是在ProfileHDF5Dir Slurm配置参数(在slurm.conf中)所引用的文件夹中创建的。
    至于您的脚本,您可以尝试使用与计算节点的SSH连接替换sstat来运行ps。假设安装了pdshclush,则可以运行以下命令:
    pdsh -j $SLURM_JOB_ID ps -u $USER -o pid,state,cputime,%cpu,rssize,command --columns 100 >> usage.txt
    
    这将为您提供每个进程的CPU和内存使用率。
    最后一点,您的作业永远不会终止,因为它会在while循环终止时终止,而while循环将在作业终止时终止...不会从脚本内观察到"$JobStatus" == "COMPLETED" 条件。作业完成后,脚本将被杀死。

    关于memory - lur浆工作期间如何监控资源?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43853964/

    10-12 02:45