1

我有一个这样的 slurm 工作:

#!/bin/bash

#SBATCH -o %A.%N.out
#SBATCH -e %A.%N.err
#SBATCH --partition=compute
#SBATCH --nodes=1
#SBATCH -n 16
#SBATCH --export=ALL
#SBATCH -t 1:00:00

cmd1 input1 > o1
cmd2 o1 > o2
cmd3 o2 > o3

使用sacct,可以获得整个作业的时间和 cpu 使用率。我也有兴趣专门获取这些cmd1信息cmd3。你怎么能那样做?工作会srun帮助做到这一点吗?

4

2 回答 2

2

您可以在每一步的 sacct 上获得单独的条目。

如果您使用 srun 运行命令,它们将生成一个步骤,并且每个步骤都将受到监视并具有自己的条目。

之后,您将在 sacct 输出中看到整个作业的一行,批处理步骤的一行,脚本上的每个步骤(srun/mpirun 命令)

于 2015-07-03T08:05:09.597 回答
1

您可以使用time -v来获取有关使用的时间和资源的高级信息。这并不是指二进制文件/usr/bin/time,而不是内置的 shell time

$ /usr/bin/time -v ls /
bin   dev  home  lib64       media  opt   root  sbin  sys  usr
boot  etc  lib   lost+found  mnt    proc  run   srv   tmp  var
    Command being timed: "ls /"
    User time (seconds): 0.00
    System time (seconds): 0.00
    Percent of CPU this job got: 94%
    Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.00
    Average shared text size (kbytes): 0
    Average unshared data size (kbytes): 0
    Average stack size (kbytes): 0
    Average total size (kbytes): 0
    Maximum resident set size (kbytes): 2136
    Average resident set size (kbytes): 0
    Major (requiring I/O) page faults: 0
    Minor (reclaiming a frame) page faults: 126
    Voluntary context switches: 1
    Involuntary context switches: 1
    Swaps: 0
    File system inputs: 0
    File system outputs: 0
    Socket messages sent: 0
    Socket messages received: 0
    Signals delivered: 0
    Page size (bytes): 4096
    Exit status: 0

您可以将此添加到批处理脚本中的任何命令。

于 2015-07-03T07:21:01.840 回答