0、CFS调度器
- CFS调度器使用完全公平调度算法。
- 完全公平调度算法引入虚拟运行时间的概念:虚拟运行时间 = 实际运行时间 * nice_0_weight / 进程的权重。
- 完全公平调度算法使用红黑树把进程按虚拟运行时间从小到大排序,每次调度选择虚拟运行时间最小的进程。
时间片
- 操作系统进程调度一个重要术语,表示进程在被抢占和调度之前,所能持续运行的时间片。
- 进程时间片 = (调度周期 * 进程权重 / 运行队列所有进程的权重总和)
进程周期
- 在某个时间长度可以保证,就绪队列里所有进程至少运行一次总的时间长度。
进程最小粒度
- 为防止进程切换太频繁,进程被调度后至少运行一小段时间,我们把这个时间长度称为调度最小粒度。
- 默认为0.75ms,可以通过/proc/sys/kernel/sched_min_granularity_ns调整。
- 如果运行队列的进程数量大于8,那么调度周期等于 调度最小粒度 乘以 进程数量,否则调度周期为6ms。
虚拟时间
- 内核使用 0-139的数