我的目标是根据用户分配CPU的时间(以秒为单位)向用户收费。测量它的最佳参数是什么?
我跑步的方式:
示例1:
switch (true)
sbatch -N1 run.sh
Submitted batch job 20
scontrol update jobid=20 TimeLimit=0-00:01
我把时间限制为1分钟,但似乎超过了29秒的时间限制。这是正常的吗?
示例2:
sacct -o totalcpu,cputime,cputimeraw,Elapsed,SystemCPU,time -j 20
TotalCPU CPUTime CPUTimeRAW Elapsed SystemCPU Timelimit
---------- ---------- ---------- ---------- ---------- ----------
00:00:00 00:11:52 712 00:01:29 00:01:00
00:00:00 00:11:52 712 00:01:29
sbatch -N1 run.sh
Submitted batch job 21
scontrol update jobid=21 TimeLimit=0-00:02
我把时间限制为2分钟,但似乎超过了22秒的时间限制。这是正常的吗?
如何将{sacct -o totalcpu,cputime,cputimeraw,Elapsed,SystemCPU,time -j 21
TotalCPU CPUTime CPUTimeRAW Elapsed SystemCPU Timelimit
---------- ---------- ---------- ---------- ---------- ----------
00:00:00 00:18:56 1136 00:02:22 00:02:00
和CPUTimeRAW
}转换为CPUTime
秒?根据我展示的例子,我无法找到它们之间的关系。
CPUTimeRaw =单位是cpu-seconds。
答案 0 :(得分:1)
时间限制的小超限是正常的,这取决于KillWait
中的slurm.conf
标记:
给予作业之间的过程的间隔(以秒为单位) SIGTERM和SIGKILL在达到其时间限制时发出信号。如果工作 无法在指定的时间间隔内正常终止,它将是 强行终止。默认值为30秒。
为用户收费:
CPUTime = (Elapsed time) x (the number of CPUs allocated)
所以CPUTime
(或CPUTimeRaw
,以秒表示的相同用法)是他们实际使用的内容以及可以收费的内容。