android cpu调度策略_基于调度器的 CPU 调频机制

最近由于 Linaro 和 ARM 主导的 EAS(Energy Aware Scheduler) 日渐完善,属于 EAS 一部分的基于调度器的调频技术也获得了很多关注。本文主要介绍基于调度器的 CPU 调频策略的原理,以及当前上游社区在这一方面最新的进展。

传统 CPU 调频策略

传统 CPU 调频模块主要分为 3 块:CPUFreq 核心模块、CPUFreq 驱动和 CPUFreq Governor。核心模块主要是一些公共的逻辑和 API,CPUFreq 驱动是处理和平台相关的逻辑,比如设置 CPU 的频率和电压。而 Governor 就是我们今天要讲的主角,CPU 调频的策略。CPU 在什么样负载,什么样的场景下应该跑多少频率,都是通过 CPUFreq Governor 采取一定策略来决定的,然后调用 cpufreq_driver->target() 来设置要调整的频率。

那么传统 CPUFreq Governor 是如何选择当前 CPU 的频率的呢?performance 和 powersave 这两个 governor 就不说了,一个是让 CPU 一直跑在最高频率,另外一个是让 CPU 跑在最低频率,所有的动作都在初始化的时候做了,本身也没有什么策略。userspace 只是实现了 scaling_setspeed 节点,主要策略在用户态,也没什么可讲的。而 ondemand 和 conservation 两个 governor 则是开启一个 timer,定期去计算各个 CPU 的负载。当 CPU 负载超过 80% 时,ondemand 就会把 CPU 频率调到最高,其他情况则会根据当前负载按比例计算频率。而对于 conservation 而言,CPU 负载超过 80% 时,默认会以 5% 的步伐递增;当 CPU 负载少于 2

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值