cpufreq framework

所有与CPUFreq相关的sysfs接口都位于:/sys/devices/system/cpu下面,各个字段的含义如下:

    cpufreq framework的功能也被称作动态电压/频率调整(Dynamic Voltage/Frequency Scaling):通过调整CPU core的电压和频率,兼顾系统的性能和功耗,在不需要高性能时,降低电压和频率,以降低功耗;在需要高性能时,提高电压和频率,以提高性能。

这部分内容主要包括:cpufreq_policy、cpufreq_governor、cpufreq_driver以及cpufreq notifiers

cpufreq policy负责设定cpu调频的一个大致范围,cpu具体运行频率,需要相应的cpufreq governor决定,最终由cpufreq driver将governor给出的频率设定到硬件上去。

    CPUFreq的通知系统使用了内核的标准通知接口。它对外提供了两个通知事件:policy通知和transition通知。

    policy通知用于通知其它模块cpu的policy需要改变,每次policy改变时,该通知链上的回调将会用不同的事件参数被调用3次,分别是:

  • CPUFREQ_ADJUST    只要有需要,所有的被通知者可以在此时修改policy的限制信息,比如温控系统可能会修改在大允许运行的频率。
  • CPUFREQ_INCOMPATIBLE    只是为了避免硬件错误的情况下,可以在该通知中修改policy的限制信息。
  • CPUFREQ_NOTIFY    真正切换policy前,该通知会发往所有的被通知者。
transition通知链用于在驱动实施调整cpu的频率时,用于通知相关的注册者。每次调整频率时,该通知会发出两次通知事件:
  • CPUFREQ_PRECHANGE    调整前的通知。
  • CPUFREQ_POSTCHANGE    完成调整后的通知。
当检测到因系统进入suspend而造成频率被改变时,以下通知消息会被发出:
CPUFREQ_RESUMECHANGE             

   

   cpu开始变频的时候调用

   cpufreq_notify_post_transition
       cpufreq_notify_transition

           __cpufreq_notify_transition

   变频失败的时候调用:

      cpufreq_notify_post_transition
          cpufreq_notify_transition

            __cpufreq_notify_transition    

参考网站:

https://www.ibm.com/developerworks/cn/linux/l-cpufreq-1/index.html


cpufreq governor的调频思路:

1)有两种类型的cpu:一种只需要给定频率范围,cpu会在该范围内自行确定运行频率;另一种需要软件指定具体的运行频率。

2)对于第一种cpu,cpufreq policy中会指定频率范围policy->{min,max},之后通过setpolicy接口,使其生效即可。

3)对于第二种cpu,cpufreq policy在指定频率范围的同时,会指明使用的governor。governor在启动后,会动态的活着静态的,设定cpu运行频率。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值