天天看点

现代操作系统 原理与实现(银杏书)—— 操作系统调度操作系统调度

操作系统调度

单核调度策略

经典调度

先到先得 / 先进先出(FIFO)

  • 缺点:
    • 长短任务混合的场景对短任务不友好

      如果长任务先到,那么所有短任务都等待很久

    • 对I/O密集型任务不友好

      I/O时会放弃CPU重新排队

最短任务优先(SJF shortest job first)

  • 缺点:
    • 必须预知任务的运行时间
    • 迟到的短任务无法优先

最短完成时间任务优先(STCF)

  • 抢占式的SJF

时间片轮转(RR Round Robin)

优先级调度

多核调度策略

能耗感知调度(EAS, Energy Aware Scheduling)

以ARM的DynamIQ架构为例,其架构包含大核和小核两种计算单元

Linux的能耗感知调度

  • linux当前使用完全公平调度器(Completely Fair Scheduler, CFS)
  • ESA需要使用当前处理器架构的功耗模型,包括:
    • 容量
      • 当前CPU在当前频率下的处理能力
      • 每个任务会占用一定的容量
    • 功率
      • 当前CPU在当前功率下的功率,单位是毫瓦(mW)
  • 系统的CPU核心会被划分为多个性能域(Performance Domain, PD)
  • 一个能耗模型中有多个性能操作点(Operating Performance Point, OPP)
    • CPU的容量和功率的对应关系
    • 同一个性能域的CPU具有同样的性能操作点(大核一样、小核一样)

当任务到来时:

  • 任务的大小为x
  • 看大核和小核的OPP中容量能够满足x的点对应的功耗,选择较小的CPU

NOTE: EAS使用于中、低负载场景。

当任一CPU核心的当前负载超过80%,Linux会开启负载均衡并关闭EAS。

继续阅读