【内核调度、负载计算】【WALT】【walt_update_task_ravg】

walt_update_task_ravg在scheduler_tick中进行更新,即会周期性的更新

walt_update_task_ravg

/* Reflect task activity on its demand and cpu's busy time statistics */
void walt_update_task_ravg(struct task_struct *p, struct rq *rq,
	     int event, u64 wallclock, u64 irqtime)
{
	u64 old_window_start;

	if (walt_disabled || !rq->window_start)
		return;

	lockdep_assert_held(&rq->lock);

	old_window_start = update_window_start(rq, wallclock);

	if (!p->ravg.mark_start)
		goto done;

	update_task_demand(p, rq, event, wallclock);
	update_cpu_busy_time(p, rq, event, wallclock, irqtime);

done:
	if (rq->window_start > old_window_start) {
		unsigned long cap_orig = capacity_orig_of(cpu_of(rq));
		unsigned int busy_limit =
			(walt_ravg_window * walt_busy_threshold) / 100;

		// walt_ravg_window  12ms
        // walt_busy_threshold 75 繁忙的阈值
		busy_limit = (busy_limit * cap_orig) >> SCHED_CAPACITY_SHIFT;
		if (rq->prev_runnable_sum >= busy_limit) {
			if (
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值