【WALT】WALT入口 update_task_ravg() 代码详解

本文详细解读Linux4.9版本中WALT算法的入口函数update_task_ravg(),涉及任务初始化、窗口时间判断、任务与CPU周期更新、需求与预测需求计算以及CPU忙碌时间更新等关键逻辑。
摘要由CSDN通过智能技术生成

【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, cpu_of(rq), wallclock);
		goto done;
	}

	// ⑷ 更新任务及 CPU 的 cycles
	update_task_rq_cpu_cycles(p, rq, event, wallclock, irqtime);
	// ⑸ 更新任务及 CPU 的 demand 及 pred_demand
	update_task_demand(p, rq, event, wallclock);
	// ⑹ 更新 CPU 的 busy time
	update_cpu_busy_time(p, rq, event, wallclock,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值