作業系統排程
單核排程政策
經典排程
先到先得 / 先進先出(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。