SLURM 报告的时间使用问题

questions on time usage reported by SLURM

我无法理解下面的时间使用情况报告:

1) 为什么作业步骤 1 和 2 的时间加起来不在批处理行中?

2) 每一列之间的关系是什么,尤其是TotalCPUCPUTime

3) 对于工作的时间使用情况,最好报告哪一个?

$ sacct -o JOBID,AllocCPUs,AveCPU,reqcpus,systemcpu,usercpu,tot
alcpu,cputime,cputimeraw -j 649176
       JobID  AllocCPUS     AveCPU  ReqCPUS  SystemCPU    UserCPU   TotalCPU    CPUTime CPUTimeRAW 
------------ ---------- ---------- -------- ---------- ---------- ---------- ---------- ---------- 
649176               24                  24  00:02.047  01:06.896  01:08.943   00:23:36       1416 
649176.batch         24   00:00:00       24  00:00.027  00:00.014  00:00.041   00:23:36       1416 
649176.0             24   00:00:00       24  00:00.813  00:24.886  00:25.699   00:08:48        528 
649176.1             24   00:00:18       24  00:01.207  00:41.996  00:43.203   00:14:24        864 

1) why the times for job step 1 & 2 do not add up to the batch line?

SystemCPU、UserCPU 和 TotalCPU 的 .batch 报告的时间是批处理文件中的命令花费 运行 的时间,不计算生成的进程[1]。 CPUTime 和 CPUTimeRAW 计算生成的进程,因此它们加起来与作业步骤对应的行。

2) what is the relationship between each column, especially for TotalCPU and CPUTime?

TotalCPU 是每个 CPU 的 UserCPU 和 SystemCPU 的总和,而 CPUTime 是经过的时间乘以请求的数量 CPU。两者之间的区别在于 CPU 什么都不做(既不在用户模式也不在内核模式)花费的时间,大部分时间等待 I/O [2]

3) for time usage of the job, which one is best to report?

这取决于你想展示什么。 Elapsed(您未在此处显示)给出 "time to solution"。 CPUTimeRAW 是经常被计算和支付的。 CPUTime 和 TotalCPU 之间的差异提供了有关 I/O 开销的信息。

[1] 来自手册页

SystemCPU The amount of system CPU time used by the job or job step. The format of the output is identical to that of the Elapsed field.

NOTE: SystemCPU provides a measure of the task’s parent process and does not include CPU time of child processes.

[2]https://en.wikipedia.org/wiki/CPU_time