考虑真实资源用量的fairshare used因子
slurm使用priority/multifactor插件进行多因子作业调度。其中Fairshare Factor考虑承诺资源与实际分配资源的差异。fsched (版本fsched-10.87) 支持新的FairshareUsed Factor, 考虑承诺资源与实际消耗资源的差异。
作用
计算用户的任务优先级时,考虑用户已完成任务的实际消耗资源,实际消耗资源多的对应降低FAIRSHAREUSED对应的优先级,进而降低总的优先级。
- 如果更新到了这个版本的fsched之后,又需要降级到更老的fsched,slurmctld服务会因为
state文件版本不兼容起不来,slurmctld log中可以看到F: Can not recover assoc_usage state, incompatible version, got 2561 need >= 8192 <= 8704。这时需要手动删除该集群state目录下的assoc_usage文件,再重启slurmctld服务
- 使用
FairshareUsed Factor因子需要事先在accounting中配置对应集群-账号-用户的association - 目前
FairshareUsed Factor只支持默认的Fair Treefairshare算法,不支持classicfairshare算法 - 如果设置相当大的
FairshareUsed Factor的权重,那么实际消耗资源越多,则对应用户的pending任务的优先级值越小,优先级越低
集群配置
PriorityWeightFairshareUsed: 集群自定义参数,整数类型,表示FairshareUsed Factor的权重
查看工具
sshare
sshare用于列出集群中association的资源份额。fsched (版本fsched-10.87) 支持新的sshare选项--ext,增加了新的FairshareUsed Factor相关的信息。
sprio
sprio用于查看构成作业调度优先级的各项因子。fsched (版本fsched-10.87) 支持新的sprio选项--ext,增加了新的FairshareUsed Factor相关的信息。
使用示例
-
确认已在
accounting中配置了对应集群-账号-用户的associationroot@ubuntu22-4c-3:~# sacctmgr list assoc cluster=fastone-5
Cluster Account User Partition Share Priority GrpJobs GrpTRES GrpSubmit GrpWall GrpTRESMins MaxJobs MaxTRES MaxTRESPerNode MaxSubmit MaxWall MaxTRESMins QOS Def QOS GrpTRESRunMin
---------- ---------- ---------- ---------- --------- ---------- ------- ------------- --------- ----------- ------------- ------- ------------- -------------- --------- ----------- ------------- -------------------- --------- -------------
fastone-5 root 1 normal
fastone-5 root root 1 normal
fastone-5 _fsched_a+ 1 normal
fastone-5 jj 1 normal
fastone-5 jj jj partition+ 1 user-fastone-5-jj-p+
fastone-5 test1 1 normal
fastone-5 test1 alice partition+ 1 fastone-5-test1-par+
fastone-5 test1 bob partition+ 1 fastone-5-test1-par+
fastone-5 test2 1 normal
fastone-5 test2 charlie partition+ 1 fastone-5-test2-par+ -
修改集群自定义参数,设置优先级插件为
priority/multifactor,并设置想要的PriorityWeightFairshareUsed。这里为了让实际消耗资源对优先级影响更大,设置了更大的PriorityWeightFairshareUsedPriorityType=priority/multifactor
PriorityWeightFairshare=30
PriorityWeightFairshareUsed=3000 -
用某些用户提交消耗资源多的任务,用其它用户提交分配资源但是消耗资源少的任务,用来试验新的因子的影响
alice@ubuntu22-4c-1:~$ srun -n4 sleep 100&
[1] 2512319
alice@ubuntu22-4c-1:~$ srun -n4 sleep 100&
[2] 2512372charlie@ubuntu22-4c-2:~$ srun stress-ng --cpu 1 --cpu-load 100 -t 100s &
[1] 164380
charlie@ubuntu22-4c-2:~$ srun stress-ng --cpu 1 --cpu-load 100 -t 100s &
[2] 164387 -
消耗资源多的任务完成前后,可以分别用
sshare --ext查看资源份额,比较资源份额的变化root@ubuntu22-4c-3:~# sshare -a --ext
Account User RawShares NormShares RawUsage EffectvUsage FairShare RawUsageUse EffectvUsageU FairShareU
-------------------- ---------- ---------- ----------- ----------- ------------- ---------- ----------- ------------- ----------
root 0.000000 517 1.000000 14 0.000000
root root 1 0.200000 0 0.000000 0.800000 0 0.000815 0.600000
_fsched_all 1 0.200000 0 0.000000 0 0.000000
jj 1 0.200000 0 0.000000 0 0.000000
jj jj 1 1.000000 0 0.000000 1.000000 0 0.000000 1.000000
test1 1 0.200000 394 0.763174 14 0.999185
test1 alice 1 0.500000 394 1.000000 0.200000 14 1.000000 0.200000
test1 bob 1 0.500000 0 0.000000 0.400000 0 0.000000 0.400000
test2 1 0.200000 122 0.236825 0 0.000000
test2 charlie 1 1.000000 122 1.000000 0.600000 0 0.000000 1.000000root@ubuntu22-4c-3:~# sshare -a --ext
Account User RawShares NormShares RawUsage EffectvUsage FairShare RawUsageUse EffectvUsageU FairShareU
-------------------- ---------- ---------- ----------- ----------- ------------- ---------- ----------- ------------- ----------
root 0.000000 898 1.000000 177817 0.000000
root root 1 0.200000 0 0.000000 0.800000 0 0.000000 0.800000
_fsched_all 1 0.200000 0 0.000000 0 0.000000
jj 1 0.200000 0 0.000000 0 0.000000
jj jj 1 1.000000 0 0.000000 1.000000 0 0.000000 1.000000
test1 1 0.200000 705 0.784619 14 0.000081
test1 alice 1 0.500000 705 1.000000 0.200000 14 1.000000 0.400000
test1 bob 1 0.500000 0 0.000000 0.400000 0 0.000000 0.600000
test2 1 0.200000 193 0.215381 177803 0.999919
test2 charlie 1 1.000000 193 1.000000 0.600000 177803 1.000000 0.200000 -
消耗资源多的任务完成前后,可以分别用
sprio --ext查看用户的pending job的优先级变化root@ubuntu22-4c-3:~# sprio --ext -l
JOBID PARTITION USER PRIORITY SITE AGE ASSOC FAIRSHARE JOBSIZE PARTITION QOS NICE TRES FAIRSHAREU
674 partition alice 606 0 0 0 6 0 0 0 0 600
675 partition charlie 3018 0 0 0 18 0 0 0 0 3000root@ubuntu22-4c-3:~# sprio --ext -l
JOBID PARTITION USER PRIORITY SITE AGE ASSOC FAIRSHARE JOBSIZE PARTITION QOS NICE TRES FAIRSHAREU
675 partition charlie 618 0 0 0 18 0 0 0 0 600
676 partition alice 1206 0 0 0 6 0 0 0 0 1200
677 partition charlie 618 0 0 0 18 0 0 0 0 600