跳到主要内容

负载阈值

fsched支持按分区配置内存(单位为MiB), CPU使用率(单位为%)和平均CPU运行队列长度(小数,无单位)的负载阈值,配置在partitions.conf中节点所在分区的PartitionName开头的行中,配置项包括:

  1. 调度内存阈值 LoadSchedMem
  2. 停止内存阈值 LoadStopMem
  3. 调度CPU使用率阈值 LoadSchedUt
  4. 停止CPU使用率阈值 LoadStopUt
  5. 调度15秒平均CPU运行队列长度阈值 LoadSchedR15s
  6. 停止15秒平均CPU运行队列长度阈值 LoadStopR15s
  7. 调度1分钟平均CPU运行队列长度阈值 LoadSchedR1m
  8. 停止1分钟平均CPU运行队列长度阈值 LoadStopR1m
  9. 调度15分钟平均CPU运行队列长度阈值 LoadSchedR15m
  10. 停止15分钟平均CPU运行队列长度阈值 LoadStopR15m
提示

对fsched调度器的配置而言,以上所有配置项格式是数字,不可设置单位

配置项说明
LoadSchedMem/LoadStopMem整数,默认单位是MiB
LoadSchedUt/LoadStopUt整数,默认单位是%
LoadSchedR15s/LoadStopR15s小数或整数,无单位
LoadSchedR1m/LoadStopR1m小数或整数,无单位
LoadSchedR15m/LoadStopR15m小数或整数,无单位
提示
  • 每30秒检查一次当前负载是否符合阈值,各个负载的获取方式如下:
指标数据来源/proc/stat具体字段对应top输出说明
mem/proc/meminfoMemAvailable行或MemFree + Buffers + Cachedtop内存行avail Mem字段(单位MB)可用内存大小,每5秒更新
ut/proc/stat主要使用idle字段,所有cpu时间字段用于计算总时间100% - id% 的EMA平滑值CPU利用率,15秒窗口EMA平滑,每5秒更新
r15s/proc/statprocs_running行 procs_blocked行无对应输出(可在Tasks行看到running数)15秒EMA平滑的运行队列长度
r1m/proc/statprocs_running行 procs_blocked行无对应输出(可在Tasks行看到running数)1分钟EMA平滑的运行队列长度
r15m/proc/statprocs_running行 procs_blocked行无对应输出(可在Tasks行看到running数)15分钟EMA平滑的运行队列长度
  • 负载变化触发loadsched/loadstop动作的预期时间(估计的预期时间,与实际值可能有出入):
指标预期时间
mem35秒
ut45秒
r15s45秒
r1m1分30秒
r15m15分30秒
  • 如果节点所在分区配置了调度阈值LoadSched[XXX]
    • 在以下任一条件满足的情况下,节点会被drain,不再接受新任务:
      • 节点剩余内存低于LoadSchedMem
      • 节点CPU使用率高于LoadSchedUt
      • 节点15秒平均CPU运行队列长度大于LoadSchedR15s
      • 节点1分钟平均CPU运行队列长度大于LoadSchedR1m
      • 节点15分钟平均CPU运行队列长度大于LoadSchedR15m
    • 在以下所有条件满足的情况下,节点会被undrain, 节点被undrain,可以继续接受新任务:
      • 节点剩余内存高于LoadSchedMem
      • 节点CPU使用率低于LoadSchedUt
      • 节点15秒平均CPU运行队列长度小于LoadSchedR15s
      • 节点1分钟平均CPU运行队列长度小于LoadSchedR1m
      • 节点15分钟平均CPU运行队列长度小于LoadSchedR15m
  • 如果节点所在分区配置了停止阈值LoadStop[XXX]和调度阈值LoadSched[XXX]
    • 在以下任一条件满足的情况下,节点上的任务会按优先级(相同优先级时按开始时间)依次被STOP(stop的任务内存不会释放),先停止优先级低的任务(相同优先级时选开始晚的任务),直到剩余最后一个任务:
      • 节点剩余内存低于LoadStopMem
      • 节点CPU使用率高于LoadStopUt
      • 节点15秒平均CPU运行队列长度大于LoadStopR15s
      • 节点1分钟平均CPU运行队列长度大于LoadStopR1m
      • 节点15分钟平均CPU运行队列长度大于LoadStopR15m
    • 在以下所有条件满足的情况下,节点被undrain的同时,被STOP的任务依次被CONTINUE,先continue优先级高的任务(相同优先级时选开始早的任务)
      • 节点剩余内存高于LoadSchedMem
      • 节点CPU使用率低于LoadSchedUt
      • 节点15秒平均CPU运行队列长度小于LoadSchedR15s
      • 节点1分钟平均CPU运行队列长度小于LoadSchedR1m
      • 节点15分钟平均CPU运行队列长度小于LoadSchedR15m

注意:

  1. 可以单独设置某一种资源的LoadSched[XXX]LoadSched[XXX]
  2. 如果要设置某一种资源的LoadStop[XXX],必须设置对应的LoadSched[XXX],并且根据资源类型满足以下对应条件,否则是错误配置,重配置会失败,slurmctld或slurmd重启会失败:
    • LoadStopMem的值小于LoadSchedMem
    • LoadStopUt的值大于LoadSchedUt
    • LoadStopR15s的值大于LoadSchedR15s
    • LoadStopR1m的值大于LoadSchedR1m
    • LoadStopR15m的值大于LoadSchedR15m
  3. 节点在多个分区时,最后一个分区的配置起作用
  4. 由于阈值检查是定期轮询的,并不能保证节点资源一定不超出负载阈值的限制

示例

root@compute1:~# cat /etc/slurm/partitions.conf

#
# PARTITION partition-U7KH5
PartitionName=partition-U7KH5 Nodes=compute1 Default=YES LoadSchedMem=1300 LoadStopMem=1200 LoadSchedUt=80 LoadStopUt=90
# DUMMY

# NODES
NodeName=compute1 CPUs=16 RealMemory=13926 Weight=1 State=CLOUD