diff --git a/study/kernel/00-DESCRIPTION/SCHEDULER.md b/study/kernel/00-DESCRIPTION/SCHEDULER.md index aa9ae3e..4f419d6 100644 --- a/study/kernel/00-DESCRIPTION/SCHEDULER.md +++ b/study/kernel/00-DESCRIPTION/SCHEDULER.md @@ -1626,18 +1626,13 @@ PREEMPT-RT PATCH 的核心思想是最小化内核中不可抢占部分的代码 如果内核在为进程选核的时候, 能够感知中断的影响, 将进程唤醒到中断负载很小的核上, 这样就不需要用户的参与, 调度器可以自己完成工作. -[IAS: Interrupt Aware Scheduler](https://lkml.org/lkml/2017/5/12/512) 就是一次很好的尝试, -为 CFS 增加了中断感知的功能. +[IAS: Interrupt Aware Scheduler](https://lkml.org/lkml/2017/5/12/512) 就是一次很好的尝试, 为 CFS 增加了中断感知的功能. -1. 当中断处理, 开始和结束时间指出每个中断情况. +1. 在中断处理的开始和结束记录每个中断情况. 每个周期, 统计每个 CPU 上的中断百分比. 给定 CPU 的中断负载也会随着时间的推移而衰减, 因此最近的中断负载在中断负载计算中具有最大的贡献, 借鉴了 PELT 的思想. 这意味着调度器在调度最近忙于处理硬件中断的线程时, 将尽量避免使用最近中断负载高的 CPU. -2. 在一个周期性的基础上, 中断负载被处理为每个运行队列, 这是按照百分比映射在一个全局数组. 给定 CPU 的中断负载也会随着时间的推移而衰减, 因此最近的中断负载在中断负载计算中具有最大的贡献. 这意味着调度器在调度最近忙于处理硬件中断的线程时, 将尽量避免使用 cpu (如果可能的话). +2. 当 CPU 上中断负载超过 80% 就会被认为是中断负载比较重的. 从调度器的角度来看, 在空闲 CPU 搜索期间, 如果有更好的 CPU 可用, 应该跳过中断负载重的 CPU. -3. 当 CPU 上中断负载超过 80%U 被认为是中断重的. 从调度器的角度来看, 在空闲 CPU 搜索期间, 如果有更好的 CPU 可用, 应该跳过中断负载重的 CPU. - - - -5) 如果没有一个 CPU 在空闲和中断负载方面更好, 那么中断重的 CPU 被认为是最好的可用 CPU. +3. 如果所有核都很繁忙或者中断都很重, 才会去选择一个中断比较重的 CPU. | 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 | |:----:|:----:|:---:|:----:|:---------:|:----:|