CFS又称完全公平调度策略,只针对普通进程,不针对RT进程。内部实现使用红黑树,左节点的值小于右节点。
红黑树节点的值为vruntime(进程的虚拟运行时间)
vruntime=pruntime*NICE_0_LOAD/weight
pruntime:物理运行时间
weight:权重
NICE_0_LOAD:参数,1024,nice为0时的权重值
CFS调度策略
- RT进程都睡眠或者执行时间超时
- 开始调度普通进程
- 最先调度vruntime最小的进程,也就是红黑树最左边的进程,此进程为P1
- 随着P1的运行,P1的pruntime会增加,于是P1的vruntime增加,P1进程在红黑树上右移。P1的优先级下降,这时候会出现另一个vruntime最小的进程,则调度到这个新的进程。
- 若突然出现RT进程,则RT进程会立即被调度
pruntime小意味着是IO消耗型进程,weight大意味着nice值小,优先级高
chrt设置调度策略和优先级,nice和renice设置进程的nice值。