文章目录
【WALT】WALT入口 update_task_ravg()
代码版本:Linux4.9 android-msm-crosshatch-4.9-android12
代码展示
void update_task_ravg(struct task_struct *p, struct rq *rq, int event,
u64 wallclock, u64 irqtime) {
u64 old_window_start;
// ⑴ 判断是否进入 WALT 算法
if (!rq->window_start || sched_disable_window_stats ||
p->ravg.mark_start == wallclock)
return;
lockdep_assert_held(&rq->lock);
// ⑵ 获取 WALT 算法中上一个窗口的开始时间
old_window_start = update_window_start(rq, wallclock, event);
// ⑶ 如果任务刚初始化结束,不进入 WALT 算法,进入 `done`
if (!p->ravg.mark_start) {
update_task_cpu_cycles(p,

WALT算法在Linux内核中用于任务负载平均的计算。update_task_ravg()函数负责更新任务的周期、需求和预测需求等,涉及窗口开始时间判断、任务初始化、CPU繁忙时间更新等多个关键步骤。该函数在任务唤醒、执行、退出等时刻被调用,影响着任务调度策略。
最低0.47元/天 解锁文章
970

被折叠的 条评论
为什么被折叠?



