cfs调度器对vruntime的迭代更新是调度器实现公平调度策略的核心机制,下面我们来分析vruntime的迭代更新机制。
1. 调度实体描述
vruntime是调度实体的成员,所以我们先明确调度实体的相关描述:
(1)load用以追踪进程组和进程的权重信息,进而影响vruntime的增加速度。
(2)虚拟运行时间,用于cfs决策选择哪一个进程作为即将要运行的进程。
(3)当前调度实体隶属于的队列。
(4)进程组的就绪队列,非空表示进程组,NULL表示进程。
2. 调度实体vrntime的设置
2.1 vruntime的初始化
(1)继承父进程的虚拟运行时间。
(2)子进程的虚拟运行时间取cfs_rq->min_vruntime+sched_vslice(cfs_rq, se)和父进程当前的虚拟运行时间两者中较大者。
(3)如果要求子进程先调度,但这个时候子进程虚拟运行时间比较大,那么交换当前运行进程和新建子进程的虚拟运行时间并设置当前运行进程的可抢占标志。
ÿ