2017-04-09 14 views
0

私の目標は、CPUを割り当てた時間(秒)に基づいてユーザーに課金することです。それを測定するための最良のパラメータは何ですか?sacct:{CPUTimeRAWとCPUTime}を秒単位でリアルタイムに変換するにはどうすればよいですか?

私は実行方法:

例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 

私は1分と時間制限を入れていたが、それは時間制限を超えたようにそれはそう29秒間。それは普通ですか?

例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 

私は2分と時間制限を入れていたが、それは22秒の制限時間を超えているように思えます。それは普通ですか?

{CPUTimeRAWCPUTime}をreal timeに秒単位で変換するにはどうすればよいですか?私が示した例に基づいて、私はそれらの間の関係を見つけることができませんでした。

CPUTimeRaw =単位はCPU秒です。 、これはslurm.confKillWaitフラグによって決定される

答えて

1

制限時間の小さなオーバーランが正常である:

間隔は、秒単位で、 SIGTERMとSIGKILL信号間のジョブのプロセスに与えられましたその制限時間に達すると。指定した間隔でジョブ が正常に終了しなかった場合は、強制終了されたのは になります。デフォルト値は30秒​​です。ユーザ充電するため

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

ようCPUTime(又はCPUTimeRaw、秒で表さ同じ使用)は、彼らが実際に使用され、彼らは何のために充電することができるものです。

+0

私の例では、私のサーバー上で言えば、1秒は8CPUTimeRAWに相当します。だから私は割り当てられたCPUの数は8だと思います。02:22 * 8 =(CPUTime = 00:18:56)は正しいです。私は1コアで走っていたので、各コアが8 CPUを割り当てていると思います。 @ciaron – Alper

+1

8つのコアを持つノードを設定した場合、 '-N1'を実行すると完全なノードが得られます。つまり、8つのコアがすべて正しく割り当てられます。 – ciaron

関連する問題