跳到主要内容

自适应调度

fsched(版本fsched-dev(FIXME) +)支持自适应调度

作用

设置相关参数后会周期性检查每个运行中任务的资源使用情况,并根据结果动态修改任务的资源请求

注意
  • 调整运行中任务的请求CPU数,可能会与绑核冲突
提示
  • 只支持调整单节点的任务
  • 自适应调度只在配置了相关参数的分区起作用
  • 调整任务资源请求的操作信息记录在head节点上的操作系统日志中
  • 目前的内存平均值取的是任务的瞬时内存总值

集群配置

修改以下配置,以使用支持更改运行中任务资源请求的插件select/cons_tres_ex

SelectType=select/cons_tres_ex

分区配置

以下分区配置参数是自适应调度用到的参数

参数名作用值的类型和范围默认值
AdaptSchedInterval检查间隔整数,默认单位是分钟, 范围最低1分钟,最高180分钟默认无效,表示不会执行周期检查
AdaptMinJobElapsed任务最小运行时间整数,默认单位是秒, 范围最低1秒默认无效,表示不会限制任务最小运行时间
AdaptCpuModeCPU调整模式可选项包括INC_DEC(增加或减少)、INC(仅增加)、DEC(仅减少)默认0,表示不会调整CPU
AdaptMemMode内存调整模式可选项包括INC_DEC(增加或减少)、INC(仅增加)、DEC(仅减少)默认0,表示不会调整内存
AdaptMemBasis内存调整基准可选项包括MAX(基于最大值)、AVE(基于平均值)默认MAX,表示基于最大值调整内存

示例

  1. 修改集群配置

    SelectType=select/cons_tres_ex
  2. 修改需要配置自适应调度的分区的分区配置

    AdaptSchedInterval=10
    AdaptMinJobElapsed=60
    AdaptCpuMode=INC_DEC
    AdaptMemMode=INC_DEC
    AdaptMemBasis=MAX
  3. 等集群重配置成功后,在配置了自适应调度的分区运行任务,并查看任务当前的MinCPUsNodeMinMemoryNode

    [jj@centos7-16c-1 ~]$ srun -p partition-9BWXR -w centos7-16c-2 stress --cpu 3 --vm 1 --vm-bytes 30M --vm-keep -t 1200s&
    [jj@centos7-16c-1 ~]$ squeue
    JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
    22 partition stress jj R 0:05 1 centos7-16c-2
    [jj@centos7-16c-1 ~]$ scontrol show job 22
    JobId=22 JobName=stress
    UserId=jj(2001) GroupId=jj(2004) MCS_label=N/A
    Priority=4294901759 Nice=0 Account=_fsched_all QOS=fastone-1-_fsched_all-partition-9bwxr WCKey=*
    JobState=RUNNING Reason=None Dependency=(null)
    Requeue=1 Restarts=0 BatchFlag=0 Reboot=0 ExitCode=0:0
    RunTime=00:00:14 TimeLimit=UNLIMITED TimeMin=N/A
    SubmitTime=2025-07-22T16:22:18 EligibleTime=2025-07-22T16:22:18
    AccrueTime=Unknown
    StartTime=2025-07-22T16:22:18 EndTime=Unknown Deadline=N/A
    SuspendTime=None SecsPreSuspend=0 LastSchedEval=2025-07-22T16:22:18
    Partition=partition-9BWXR AllocNode:Sid=centos7-16c-1:15590
    ReqNodeList=centos7-16c-2 ExcNodeList=(null)
    NodeList=centos7-16c-2
    BatchHost=centos7-16c-2
    NumNodes=1 NumCPUs=1 NumTasks=1 CPUs/Task=1 ReqB:S:C:T=0:0:*:*
    TRES=cpu=1,mem=1M,node=1,billing=1
    Socks/Node=* NtasksPerN:B:S:C=0:0:*:* CoreSpec=*
    MinCPUsNode=1 MinMemoryNode=1M MinTmpDiskNode=0
    Features=(null) DelayBoot=00:00:00
    OverSubscribe=OK Contiguous=0 Licenses=(null) Network=(null)
    Command=stress --cpu 3 --vm 1 --vm-bytes 30M --vm-keep -t 1200s
    WorkDir=/fastone/users/jj
    Power=
  4. 等任务运行一段时间后(超过AdaptMinJobElapsed,并且遇到下一次调整周期),任务的请求资源会被自动调整,可以再次查看任务的MinCPUsNodeMinMemoryNode

    [jj@centos7-16c-1 ~]$ scontrol show job 22
    JobId=22 JobName=stress
    UserId=jj(2001) GroupId=jj(2004) MCS_label=N/A
    Priority=4294901759 Nice=0 Account=_fsched_all QOS=fastone-1-_fsched_all-partition-9bwxr WCKey=*
    JobState=RUNNING Reason=None Dependency=(null)
    Requeue=1 Restarts=0 BatchFlag=0 Reboot=0 ExitCode=0:0
    RunTime=00:07:22 TimeLimit=UNLIMITED TimeMin=N/A
    SubmitTime=2025-07-22T16:22:18 EligibleTime=2025-07-22T16:22:18
    AccrueTime=Unknown
    StartTime=2025-07-22T16:22:18 EndTime=Unknown Deadline=N/A
    SuspendTime=None SecsPreSuspend=0 LastSchedEval=2025-07-22T16:22:18
    Partition=partition-9BWXR AllocNode:Sid=centos7-16c-1:15590
    ReqNodeList=centos7-16c-2 ExcNodeList=(null)
    NodeList=centos7-16c-2
    BatchHost=centos7-16c-2
    NumNodes=1 NumCPUs=4 NumTasks=1 CPUs/Task=1 ReqB:S:C:T=0:0:*:*
    TRES=cpu=4,mem=30M,node=1,billing=4
    Socks/Node=* NtasksPerN:B:S:C=0:0:*:* CoreSpec=*
    MinCPUsNode=4 MinMemoryNode=30M MinTmpDiskNode=0
    Features=(null) DelayBoot=00:00:00
    OverSubscribe=OK Contiguous=0 Licenses=(null) Network=(null)
    Command=stress --cpu 3 --vm 1 --vm-bytes 30M --vm-keep -t 1200s
    WorkDir=/fastone/users/jj
    Power=
  5. 可以在head节点上的操作系统日志中查看相关log

    [root@jjtest-head ~]# grep "resource adjust" /var/log/messages
    Nov 6 18:24:17 jjtest-head statesvc[1006657]: [2025-11-06 18:24:17.142] [statesvc] [info] start update and resource adjustment threads
    Nov 6 18:24:17 jjtest-head statesvc[1006657]: [2025-11-06 18:24:17.143] [statesvc] [info] resource adjustment thread started
    Nov 6 18:26:17 jjtest-head statesvc[1006657]: [2025-11-06 18:26:17.166] [statesvc] [info] _modify_job_resources: job 3 (user: root) resource adjusted: cpu=1->7, mem=1MB->30MB