跳到主要内容

考虑真实资源用量的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相关的信息。

使用示例

  1. 确认已在accounting中配置了对应集群-账号-用户association

    root@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+
  2. 修改集群自定义参数,设置优先级插件为priority/multifactor,并设置想要的PriorityWeightFairshareUsed。这里为了让实际消耗资源对优先级影响更大,设置了更大的PriorityWeightFairshareUsed

    PriorityType=priority/multifactor
    PriorityWeightFairshare=30
    PriorityWeightFairshareUsed=3000
  3. 用某些用户提交消耗资源多的任务,用其它用户提交分配资源但是消耗资源少的任务,用来试验新的因子的影响

    alice@ubuntu22-4c-1:~$ srun -n4 sleep 100&
    [1] 2512319
    alice@ubuntu22-4c-1:~$ srun -n4 sleep 100&
    [2] 2512372
    charlie@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
  4. 消耗资源多的任务完成前后,可以分别用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.000000
    root@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
  5. 消耗资源多的任务完成前后,可以分别用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 3000
    root@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