linux调cpu电压,Linux内核中CPU主频和电压调整 (四)

CPUFreq Governor/管理器

什么是CPUFreq Governor?

大多数cpufreq驱动(事实上,除了longrun, 所有的都是),甚至大多数的处理器频率调整算法

都仅只支持处理器被设置成一个特定的频率。为了提供动态频率调整,cpufreq 核心必须能够

告知驱动程序一个目标频率。如此,驱动程序才能够提供一个 "->target" 函数调用,而不是一个

已经存在的 ”->setpolicy“ 函数调用。

对于 ”longrun“ 模式, 所有的主频率都保持一致。

然而,对于一个给定的 CPUFreq policy 中,如何去决定使用其中的哪一个频率呢?

这就是 ”CPUFreq governor“扮演的功能。

通常,内核中至少具有 powersave 和 performance 两种模式。

前者是最低频率/低功耗模式,后者是最高频率/高性能模式。

Linux 内核中的Governors

performance    静态设置处理器频率到scaling_min_freq/scaling_max_freq频限定义的最高频率

powersave       静态设置处理器频率到scaling_min_freq/scaling_max_freq频限定义的最低频率

userspace        允许用户或任何用户态程序以 UID=root模式设置处理器频率为一个特定频率

通过创建CPU-device目录中的 scaling_setspeed文件来实现

ondemand        根据当前用途来决定处理器频率。

为了实现此模式,处理器必须具有非常快速切换频率的能力。

conservative     非常类似OnDemand模式,根据当前使用情况来设置处理器频率。

其区别在于,此模式能较平滑的增加或减小处理器速度;而不是一有负载发生

就立即切换到最高频率。此模式更适用于电池供电环境。

通过sysfs, 此模式具有如下变量设置:

freq_step:        其定义了处理器应该平滑增加/减少的频率间隔步长。

缺省 为处理器最高频率的5%。

此值可在0~100间变动。0 表示锁定处理器频率而无论负载情况如何。

100则表示conservative模式退化成为 OnDemand模式(理论上,不考虑overhead)

down_threshold:   类似于 OnDemand 的up_threshold变量,但是表示相反意义。

其值为20表示,如果负载低于20%, 则处理器将降低频率。

interactive         此模式被设计成对交互性负载延迟敏感。此模式依据负载使用情况设置处理器频率,

也类似于 OnDemand 和 Conservative 模式。然而,相比而言,本模式对于如何调整处理器频率更积极。

每 X 毫秒采样一次处理器负载, 将导致CPU在 X 毫秒内性能降低。这可能导致丢frame或者UI停顿。

与采样CPU的方法相比,本模式采取在离开 cpu idle 后,立即检查是否需要提高处理器频率的方式。

当处理器离开 cpu idle 模式,就设置一个在1~2 tick 就会 timeout 的定时器。 如果CPU 在退出

空闲模式时和定时器触发之间非常繁忙,就假定处理器处于未全速运行模式并立即切换至最高频率。

如果处理器不是足够繁忙因此不需要立即切换到最高频率,Governor 将评估自上一次频率调整以来的处理器负载,

选择新的处理器频率并且切换之。

CPUFreq核心的Governor接口

新的governor必须通过 cpufreq_register_governor() 函数向 CPUFreq核心注册自己。

该函数接收如下参数:

governor->name        governor唯一名称

governor->governor   governor回调函数

governor->owner        governor的THIS_MODULE宏

governor->governor 回调函数参数为当前CPU的 cpufreq_policy struct和一个 无符号整型 event 。

有如下几个 events:

CPUFREQ_GOV_START:               Governor 将开始 policy_cpu 任务。

CPUFREQ_GOV_STOP                 Governor 将停止policy_cpu 任务。

CPUFREQ_GOV_LIMITS:               已被 policy->min 和 policy->max 代替。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值