当前位置:网站首页>一点点读懂cpufreq(一)
一点点读懂cpufreq(一)
2022-08-04 22:50:00 【szembed】
目录
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之间的调用关系:
边栏推荐
- SQL Server calls WebService
- How to make a video gif?Try this video making gif artifact
- 移动web开发03
- Community Sharing|Tencent Overseas Games builds game security operation capabilities based on JumpServer
- DREAMWEAVER8 部分问题解决方案
- Nacos配置中心之客户端长轮询
- 【游戏建模模型制作全流程】使用ZBrush制作骷髅王
- Service Mesh落地路径
- PowerBI scripture series
- 今天又做了三个梦,其中一个梦梦里的我还有意识会思考?
猜你喜欢
【3D建模制作技巧分享】ZBrush模型制作流程:地精
3D建模师为了让甲方爸爸过稿,还可以这么做,就是在赚血汗钱啊
文献阅读十——Detect Rumors on Twitter by Promoting Information Campaigns with Generative Adversarial Learn
三个多月、40余场面试浓缩为6000字
Redis理解
2022精选最新金融银行面试真题——附带答案
被领导拒绝涨薪申请,跳槽后怒涨9.5K,这是我的心路历程
线上虚拟展馆展示具有哪些优势
【2020】【论文笔记】超表面:多功能和可编程——
【字符串函数内功修炼】strcpy + strcat + strcmp(一)
随机推荐
深度学习 RNN架构解析
Based on the results of the facts
历史上的今天:PHP公开发布;iPhone 4 问世;万维网之父诞生
FinClip崁入式搭建生态平台,降低合作门槛
BUG | The interface returns abnormal data
promise详解
线性DP(下)
MySQL的JSON 数据类型1
QT[一] 信号与槽
SQL Server calls WebService
Controller层代码这么写,简洁又优雅!
【3D建模制作技巧分享】ZBrush模型制作流程:地精
正则表达式绕过
质量管理大师爱德华·戴明博士经典的质量管理14条原则
今天是七夕,来看看程序员的土味情话。
测试薪资这么高?刚毕业20K,仅需3.5个月
【C - 基本概念】
【3D建模制作技巧分享】ZBrush如何设置笔刷快捷键
[Mock Interview - 10 Years of Work] Are more projects an advantage?
Use ngrok to optimize web pages on raspberry pi (1)