2017-04-09 1 views
0

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.

Antwort

1

Die kleine Überschreitung der Zeitbegrenzung ist normal, dies durch die KillWait Flags in slurm.conf bestimmt:

Das Intervall in Sekunden auf einen Prozess Job gegeben zwischen dem SIGTERM und SIGKILL Signalen bei Erreichen des Zeitlimits. Wenn der Job nicht ordnungsgemäß im angegebenen Intervall beendet wird, wird er zwangsweise beendet. Der Standardwert ist 30 Sekunden.

Zum Aufladen Benutzer:

CPUTime = (Elapsed time) x (the number of CPUs allocated)

so CPUTime (oder CPUTimeRaw, das gleiche in Sekunden ausgedrückt usage) ist das, was sie tatsächlich verwendet und was sie in Rechnung gestellt werden.

+0

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

+1

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

Verwandte Themen