1 of 9

Slurm 補充

2 of 9

查詢用戶使用率

CPU:

sreport cluster AccountUtilizationByUser -t HourPer format=accounts,Login,Proper,TresName,Used,Energy start=2025-06-01T00:00:00 end=2025-06-09T23:59:59 tree

GPU:

sreport cluster AccountUtilizationByUser --tres=gres/gpu -t HourPer format=accounts,Login,Proper,TresName,Used,Energy start=2025-06-01T00:00:00 end=2025-06-09T23:59:59 tree

3 of 9

Slurm 如何排序(排序評斷標準)

score = Fairshare_score + WeightAge * (waiting_time_factor)� + WeightJobSize * (size_factor) + WeightAssoc * (assoc_factor)

分數

備註

Fairshare_score

0~100

根據使用者歷史資源使用量計算,使用少者優先權高,用越多優先權下降。

WeightAge

30

作業等待時間越久,waiting_time_factor值越大=>分數越高;可避免作業長時間排隊未被執行。

WeightJobSize

10

使用更多資源(如 CPU/GPU)者size_factor值越大=>分數略高;鼓勵資源密集型作業有效執行。

WeightAssoc

30

根據帳號設定的靜態優先值,預先定義不同使用者的排程等級,有緊急需求時才會變動。

註:

score 越高,代表在排隊等待時會越前面。

factor 數值都介在0~1之間

4 of 9

一些解釋

Fairshare_score會依照使用者使用的資源量去做計算,且會採用7天半衰期的方式,以防止之前資源使用很多的人會一直在排隊,無法使用GPU。

這邊舉個例子 : A、B、C 三位user 都在 User 這個群組裡,三人的RawShares(資源分配份額)都設為100,代表3人的Normshare都為1/3,假設三位user都是今天辦的帳號,A在7天前使用15000單位資源(已結束),B在2天前使用5000單位資源(已結束),目前有一位使用者D的JOB剛結束,且三人都有提交JOB進入排程系統 :

A 提交JOB為 使用 2 CPU core 、 Mem 4G 、 GPU 1張 、時間 0.5天,等待時間2小時

B 提交JOB為 使用 16 CPU core 、 Mem 128G 、 GPU 1張 、時間 1天,等待時間1天

C 提交JOB為 使用 4 CPU core 、 Mem 24G 、 GPU 1張 、時間 1天,等待時間1天

分數計算會在之後投影片詳細說明��

5 of 9

RawUsage

EffectvUsage

Fairshare_score = 100 * min(Normshare / EffectvUsage , 1 )

A

15000 * (0.5)^(7/7)�= 7500

7500 / (7500+4100+0) = 0.64

100 * min( (1/3) / 0.64 , 1 ) = 52

B

5000 * (0.5)^(2/7)�=4100

0.36

100 * min( (1/3) / 0.36 , 1 ) = 92

C

0

0

100 * min( (1/3) / 0 , 1 ) = 100

註 :

RawUsage 是原始使用的單位資源量

EffectvUsage 是該使用者在所屬群組裡占用多少比例的資源量

6 of 9

Waiting_time_factor 是如何計算的?

目前使用者等待時間/同群組使用者們總等待時間

以上面例子來計算 :

目前等待時間

Waiting_time_factor

WeightAge * (waiting_time_factor)

A

2 小時

2 / (2 + 24 + 24) = 0.04

30 * 0.04 = 1.2

B

1 天

24 / (2 + 24 + 24) = 0.48

30 * 0.48 = 14.4

C

1 天

24 / (2 + 24 + 24) = 0.48

30 * 0.48 = 14.4

7 of 9

size_factor 是如何計算的?

目前使用者預計使用CPU core / 同群組使用者們預計使用最大CPU core

以上面例子來計算 :

預計使用CPU core

size_factor

WeightJobSize * (size_factor)

A

2

2 / 16 = 0.125

10 * 0.125 = 1.25

B

16

16 / 16 = 1

10 * 1 = 10

C

4

4 / 16 = 0.25

10 * 0.25 = 2.5

8 of 9

分數總和 :

Fairshare_score

WeightAge * (waiting_time_factor)

WeightJobSize * (size_factor)

WeightAssoc * (assoc_factor)

Score

A

52

1.2

1.25

30 * 0.5 = 15

69.45

B

92

14.4

10

30 * 0.5 = 15

131.4

C

100

14.4

2.5

30 * 0.5 = 15

131.9

註 : assoc_factor 預設為 0.5

依照計算,最終會由C優先執行

而JOB完成後,會計算單位資源,以供後續計算Fairshare_score

9 of 9

單位資源計算方式

目前單位資源各權重是�CPU core => 1 , Mem(GB) => 0.25 , GPU => 5

舉例來說,當執行一個Job,使用CPU 2core , Mem 4GB , GPU 1張 , 時間600秒

權重

用量

執行時間

RawUsage

合計

CPU core

1

2

600秒

1 * 2 * 600 = 1200

4800

Mem

0.25

4

0.25 * 4 * 600 = 600

GPU

5

1

5 * 1 * 600 = 3000