Mein Ziel ist es, Benutzer basierend auf der Zeit (in Sekunden), die ihnen die CPU zugewiesen hat, zu belasten. Was ist der beste Parameter um es zu messen?sacct: Wie kann ich {CPUTimeRAW und CPUTime} in Sekunden in Echtzeit umrechnen?
So wie ich laufen:
Beispiel 1:
sbatch -N1 run.sh
Submitted batch job 20
scontrol update jobid=20 TimeLimit=0-00:01
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
ich eine Frist als 1 Minute gesetzt hatte, aber es scheint, wie es das Zeitlimit überschreitet für 29 Sekunden. Es ist normal?
Beispiel 2:
sbatch -N1 run.sh
Submitted batch job 21
scontrol update jobid=21 TimeLimit=0-00:02
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
ich eine Frist als 2 Minuten gestellt hatte, aber es scheint, wie es die Frist für 22 Sekunden überschreitet. Es ist normal? Wie kann ich {CPUTimeRAW
und CPUTime
} in real time
als Sekunden konvertieren? Basierend auf den Beispielen, die ich gezeigt habe, war ich nicht in der Lage, die Beziehung zwischen ihnen zu finden.
CPUTimeRaw = Einheiten sind CPU-Sekunden.
Im Beispiel erwähne ich, auf meinem Server entspricht 1 Sekunde 8 CPUTimeRAW. Also ich denke, die Anzahl der CPU-Zuweisung ist 8. Also 02:22 * 8 = (CPUTime = 00: 18: 56) was richtig ist. Ich lief auf 1 Kern, also denke ich, jeder Kern vergibt 8 CPU. @ciaron – Alper
Wenn Sie einen Knoten mit 8 Kernen eingerichtet haben, erhalten Sie mit "-N1" einen vollständigen Knoten, d. h. eine Zuweisung aller 8 Kerne, korrekt. – ciaron