schedutil--调频与调度的交互

cpufreq_update_util

sched模块通过cpufreq_update_util进行调频,

  1. flags里包含SCHED_CPUFREQ_WALT,表示是WALT负载变化导致的调频;

  2. 否则,就是PELT负载变化引起的调频,

    高通设备的默认配置中为WALT负载追踪,因此需要重点关注因WALT产生的调频;

static inline void cpufreq_update_util(struct rq *rq, unsigned int flags)
{
	struct update_util_data *data;
	u64 clock;

#ifdef CONFIG_SCHED_WALT
	if (!(flags & SCHED_CPUFREQ_WALT))
		return;
	clock = sched_ktime_clock();
#else
	clock = rq_clock(rq);
#endif

	data = rcu_dereference_sched(*per_cpu_ptr(&cpufreq_update_util_data,
					cpu_of(rq)));
	if (data)
		data->func(data, clock, flags);
}

调用时机

cpufreq_update_util	12	sched.h (kernel\sched)	2644
	try_to_wake_up			67	core.c (kernel\sched)	2772
	scheduler_tick			37	core.c (kernel\sched)	3776
	__add_running_bw		9	deadline.c (kernel\sched)	89
	__sub_running_bw		10	deadline.c (kernel\sched)	103
	cfs_rq_util_
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值