我有一个像这样的邋work工作:
#!/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
会帮助做到这一点吗?
答案 0 :(得分:2)
每步可以在sacct上单独输入一个条目。
如果您使用srun运行命令,它们将生成一个步骤,每个步骤都将受到监控并拥有自己的条目。
在此之后,您将在sacct输出中看到整个作业的一行,一个用于批处理步骤,一个用于脚本的每个步骤(srun / mpirun命令)
答案 1 :(得分:1)
您可以使用time -v
获取有关所用时间和资源的高级信息。并非这指的是二进制/usr/bin/time
,而不是内置time
的shell:
$ /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
您可以将其添加到批处理脚本中的任何命令。