目录

1、内核频率管理策略

1.1 performance

1.2 powersave

1.3 Userspace

1.4 ondemand

1.5 conservative

1.6 Interactive

2、频率和电压调整顺序

3、模块之间关系


1、内核频率管理策略

Linux针对CPU的DVFS,主要在cpufreq中实现,Linux内部共有6种对频率的管理策略userspace,conservative,ondemand,powersave ,performance和Interactive

1.1 performance

CPU会固定工作在其支持的最高运行频率上;

1.2 powersave

CPU会固定工作在其支持的最低运行频率上。因此这两种 governors 都属于静态 governor ,即在使用它们时 CPU 的运行频率不会根据系统运行时负载的变化动态作出调整。这两种 governors 对应的是两种极端的应用场景,使用 performance governor 体现的是对系统高性能的最大追求,而使用 powersave governor 则是对系统低功耗的最大追求。

1.3 Userspace

最早的 cpufreq 子系统通过 userspace governor 为用户提供了这种灵活性。系统将变频策略的决策权交给了用户态应用程序,并提供了相应的接口供用户态应用程序调节 CPU 运行频率使用。用户态程序通过向/sys/devices/system/cpu/cpux/cpufreq/scaling_setspeed写入指定的频率来设置CPU的运行频率(x表示cpu序号,和/proc/cpuinfo中对应),写入的频率必须是同目录下scaling_available_frequencies中支持的频率。

1.4 ondemand

每隔一定时间间隔对系统负载进行一次计算,并且计算出CPU使用率,若高于门限值的话,CPU频率会被直接调至最高频率;若使用率低于设定值的话,就根据使用率计算出目标频率。

1.5 conservative

和Ondemand相比,Conservative是随着负载逐步的往上调整CPU频率。当某个APP在启动瞬间比较耗费CPU,而正常运行则不耗费CPU的情况下,Conservative显然会影响APP的启动速度和系统性能。Ondemand降频更加激进,conservative降频比较缓慢保守,事实使用ondemand的效果也是比较好的。和ondemand管理器不同的是,在CPU负载高的时候conservative并不直接跳上最高的主频,而是采用步进的方式来升高主频。

1.6 Interactive

由Android提出的机制,未被linux kernel社区接纳,在AOSP的linux分支上存在了较长时间。它针对CPU密集的任务的调频策略会比较激进。因为它在每一个 CPU 上都注册了一个 idle notifier。当 CPU 退出 idle 时,去检查然后决策是否需要调整频率,非idle时仍然需要依赖timer去定时采样,才能知道系统负载信息。

2、频率和电压调整顺序

针对DVFS来说:

1)在需要增加Freq,over drive的情况下:软件首先决定最小的clock frequency,再决定最小的voltage供应。

(1)cpu program power supply to new voltage。(cpu可以换为其他逻辑)

(2)cpu继续工作在现有freq,直到voltage稳定。

(3)cpu program新的freq,可以是clock divider或者PLL,如果是PLL,则需要花费更多时间等待PLL稳定。

2)如果是要降低Freq,则执行顺序:

(1)cpu program新的freq。

(2)等待clock divider或者PLL稳定。

(3)cpu program新的voltage。

总之Freq只有在voltage增加之后,才能提高,Freq必须在voltage减小前,先降低。

3、模块之间关系

cpufreq.c、cpufreq_governor、cpufreq_driver、cpufreq_ondemand之间的调用关系如下,在cpu加入到系统中和移除系统时,cpufreq之间的调用关系:

一点点读懂cpufreq(一)相关推荐

  1. 一点点读懂Thremal(二)

    目录 1.基本术语概念 1.1 trip point 1.2 cooling state 1.3 zone device state 2.Governor实现介绍 3.step_wise govern ...

  2. 什么是内卷?华为内部这篇文章读懂

    来源:互联网坊间八卦(ID:kekesil) 内卷的意思是明明已经靠近边界有个天花板,但却又不断自我激发,繁复化.精致化.概念的含糊其辞是无效讨论和跌入焦虑自我再生产困境的原因之一.判断内卷还是良性竞 ...

  3. 单片机代码怎么读懂_单片机程序员的面试经验

    需要掌握哪些技能 ● 需要了解并使用过几款常见的单片机. ●  需要熟悉常见的硬件接口譬如 UART .SPI .I2C ●  需要了解一些传感器相关的知识,譬如声.光.磁.温.惯性器件 ●  需要能 ...

  4. 一文读懂 Java 工程师学习路线!

    作者 | 三太子敖丙 来源 | 三太子敖丙(ID:NiceOffer) 在写这个文章之前,我花了点时间,自己臆想了一个电商系统,基本上算是麻雀虽小五脏俱全,我今天就用它开刀,一步步剖析,我会讲一下我们 ...

  5. 看见、读懂、放大,这个运营套路有点意思

    本文是[友盟+]互联网应用数据业务总经理@于晓航,在2018中国产品运营大会的演讲,由人人都是产品经理社区@Daisy 整理编辑. 其实,每个人都会有自己看用户数据的方式. 很多产品经理看用户数据基本 ...

  6. 一文读懂BERT(原理篇)

    一文读懂BERT(原理篇) 2018年的10月11日,Google发布的论文<Pre-training of Deep Bidirectional Transformers for Langua ...

  7. 计算机飞速发展的图片,让PC读懂你的图

    本文转载自CHIP<新电脑>2010年5月号,<科技与未来>专栏将在今后的几期中,陆续介绍微软亚洲研究院的新技术,我们将及时转载,与您分享新技术的精彩. 计算机拥有思想,拥有人 ...

  8. 如果读懂泪水,就懂了人生的真谛

    2019独角兽企业重金招聘Python工程师标准>>> 忽然间,我毫无缘故.不管别人是否知道什么,只想离开.让它成为别人刻意提起也记不起来的过去.逃离这一段幻想和梦境.逃离这一段伤悲 ...

  9. 读懂婴幼儿心理学,不要随便责怪孩子

    读懂婴幼儿心理学,不要随便责怪孩子 一.不知道孩子在0-6岁时存在各种敏感期,把孩子在敏感期的表现当成不乖的行为斥责孩子,违背了孩子的天性,造成他的痛苦,留下心理隐患. 孩子在0-6岁时存在各种各样的 ...

  10. 25张图让你读懂神经网络构架

    [独家]25张图让你读懂神经网络架构 2017-05-21 22:32 由于新的神经网络架构无时无刻不在涌现,想要记录所有的神经网络是很困难的事情.要把所有这些缩略语指代的网络(DCIGN,IiLST ...

最新文章

  1. iOS9 App Thinning(应用瘦身)功能介绍
  2. 问题 F: 小鱼的格子裁剪(dfs)
  3. 蓝桥杯练习(java):字符串对比
  4. 黄聪: Bootstrap之Form表单验证神器: BootstrapValidator(转)
  5. html分类代码查询,html标签元素分类(示例代码)
  6. leetcode - 1105. 填充书架
  7. java 不退出_(Java)如果我在其外面点击,JPopupMenu将不会关闭
  8. Proxy动态代理代码示例
  9. 先进pid控制matlab仿真_PID控制原理 三 (控制系统硬件选择与仿真)
  10. c# WebApi之解决跨域问题:Cors
  11. 领域驱动设计学习笔记2
  12. 全文索引的使用(二)--使用同义词库
  13. 3500振动监测系统培训总结
  14. 几个名词解释 TBB VPP KKK
  15. mysql 修改隔离级别_设置mysql隔离级别
  16. 为什么我的背景图片加载不出来
  17. Coding life,云栖社区的个性化首页上线
  18. html怎么制作扇形,css3绘制画圆、扇形
  19. MODIS下载、处理全流程记录
  20. 微信小程序如何改变icon标签的颜色

热门文章

  1. 手机应用使用情况监控统计APP
  2. japanhr日语小工具 日文汉字转平假名-japankana
  3. linux 目录权限上下文,谢烟客---------Linux之文件安全上下文及特殊权限位
  4. excel入门,如何玩转excel,你早该这么玩Excel笔记9
  5. 网页搜索(百度谷歌)你不得不知道的十个小技巧
  6. 项目突发事件识别_当突发事件发生时,您要做的就是文化
  7. Typora安装 Pandoc实现导出功能
  8. ANSYS APDL 绘制云图时出现错误“The Requested S data is not available. The PLNSOL command is ignored“的解决方法
  9. 涂抺mysql 李丙洋_涂抹
  10. 使用VS2013+MATLAB2016B开发MEX(64位)程序