2017-04-09 28 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-seconds。

回答

1

時限小膨脹率是正常的,這是由KillWait標誌slurm.conf確定:

的時間間隔,以秒 SIGTERM和SIGKILL信號之間給作業的流程達到其時間限制。如果作業 未按指定時間間隔正常終止,則會強制終止 。默認值是30秒。

對於收費用戶:

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

所以CPUTime(或CPUTimeRaw,以秒爲單位的相同的使用)是他們實際使用了什麼以及他們可以收取。

+0

在我提到的例子中,在我的服務器上1秒鐘相當於8個CPUTimeRAW。所以我猜CPU分配數是8.所以02:22 * 8 =(CPUTime = 00:18:56)這是正確的。我在1核上運行,所以我猜每個內核都分配了8個CPU。 @ciaron – Alper

+1

如果你設置了一個8核的節點,那麼使用'-N1'運行會得到一個完整的節點,即所有8個核心的分配都是正確的。 – ciaron