1.       概述

Linux 内部共有五种对频率的管理策略 userspace , conservative , ondemand , powersave  和  performance。

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

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

l Userspace :最早的  cpufreq  子系统通过  userspace governor 为用户提供了这种灵活性。系统将变频策略的决策权交给了用户态应用程序,并提供了相应的接口供用户态应用程序调节CPU 运行频率使用。(可以使用 Dominik  等人开发了 cpufrequtils  工具包   )

l ondemand  : userspace 是内核态的检测,效率低。而 ondemand 正是人们长期以来希望看到的一个完全在内核态下工作并且能够以更加细粒度的时间间隔对系统负载情况进行采样分析的  governor 。

l conservative  :  ondemand governor  的最初实现是在可选的频率范围内调低至下一个可用频率。这种降频策略的主导思想是尽量减小对系统性能的负面影响,从而不会使得系统性能在短时间内迅速降低以影响用户体验。但是在  ondemand governor  的这种最初实现版本在社区发布后,大量用户的使用结果表明这种担心实际上是多余的,  ondemand governor 在降频时对于目标频率的选择完全可以更加激进。因此最新的 ondemand governor  在降频时会在所有可选频率中一次性选择出可以保证 CPU  工作在  80%  以上负荷的频率,当然如果没有任何一个可选频率满足要求的话则会选择CPU  支持的最低运行频率。大量用户的测试结果表明这种新的算法可以在不影响系统性能的前提下做到更高效的节能。在算法改进后,  ondemand governor  的名字并没有改变,而  ondemandgovernor  最初的实现也保存了下来,并且由于其算法的保守性而得名  conservative  。

Ondemand 降频更加激进,conservative 降频比较缓慢保守,事实使用 ondemand 的效果也是比较好的。

2.       相关工具

Cpupower指令可以控制(具体使用方法参见:cpupower help<command>):

Usage:     cpupower [-d|--debug] [-c|--cpu cpulist ]<command> [<args>]

Supported commands are:

frequency-info

frequency-set

idle-info

idle-set

set

info

monitor

help

比如:

[root@localhost ~]#   cpupower -c all  frequency-info

analyzing CPU 0:

driver: acpi-cpufreq

CPUs which run at the same hardwarefrequency: 0

CPUs which need to have their frequencycoordinated by software: 0

maximum transition latency: 10.0 us.

hardware limits: 1.60 GHz - 2.93 GHz

available frequency steps: 2.93 GHz, 2.67GHz, 2.40 GHz, 2.13 GHz, 1.87 GHz, 1.60 GHz

available cpufreq governors: conservative, userspace, powersave,ondemand, performance

current policy: frequency should be within1.60 GHz and 2.93 GHz.

The governor "conservative"may decide which speed to use

within this range.

current CPU frequency is 1.60 GHz (assertedby call to hardware).

boost state support:

Supported: no

Active: no

analyzing CPU 1:

driver: acpi-cpufreq

CPUs which run at the same hardwarefrequency: 1

CPUs which need to have their frequencycoordinated by software: 1

maximum transition latency: 10.0 us.

hardware limits: 1.60 GHz - 2.93 GHz

available frequency steps: 2.93 GHz, 2.67GHz, 2.40 GHz, 2.13 GHz, 1.87 GHz, 1.60 GHz

available cpufreq governors: conservative,userspace, powersave, ondemand, performance

current policy: frequency should be within1.60 GHz and 2.93 GHz.

The governor"conservative" may decide which speed to use

within this range.

current CPU frequency is 1.60 GHz (assertedby call to hardware).

boost state support:

Supported: no

Active: no

3.       相关文件

Cpu频率相关的文件在/sys/devices/system/cpu/cpu0/cpufreq/目录。

Cpufreq 在用户态所呈现的接口:

l cpuinfo_max_freq  cpuinfo_min_freq :   分别给出了  CPU  硬件所支持的最高运行频率及最低运行频率,

l cpuinfo_cur_freq  则会从CPU 硬件寄存器中读取CPU 当前所处的运行频率。

l Governor 在选择合适的运行频率时只会在scaling_max_freq 和 scaling_min_freq  所确定的频率范围内进行选择

l scaling_cur_freq  返回的是cpufreq 模块缓存的CPU当前运行频率,而不会对CPU 硬件寄存器进行检查。

l scaling_available_governors 会告诉用户当前有哪些  governors  可供用户使用

l scaling_driver  则会显示该  CPU  所使用的变频驱动程序

l Scaling_governor  则会显示当前的管理策略,往这个上 echo 其他类型会有相应的转变。

l scaling_setspeed :需将 governor 类型切换为 userspace ,才会出现,往这个文件 echo 数值,会切换主频

4.       相关内核模块

内核编译时的控制参数:

#

# x86 CPU frequency scalingdrivers

#

CONFIG_X86_INTEL_PSTATE=y

CONFIG_X86_PCC_CPUFREQ=m

CONFIG_X86_ACPI_CPUFREQ=m

CONFIG_X86_ACPI_CPUFREQ_CPB=y

相关的内核模块:

/lib/modules/3.10.0-327.el7.x86_64/kernel/drivers/cpufreq

/lib/modules/3.10.0-327.el7.x86_64/kernel/drivers/cpufreq/acpi-cpufreq.ko

/lib/modules/3.10.0-327.el7.x86_64/kernel/drivers/cpufreq/cpufreq_stats.ko

/lib/modules/3.10.0-327.el7.x86_64/kernel/drivers/cpufreq/pcc-cpufreq.ko

5.      其他问题

较新的linux版本对于Intel的处理器有优化,导致无法看到五种governors,只有powersave,和performance两种,但实际效果并不好。这是由于使用intel_pstate驱动导致,可以通过在引导脚本增加intel_pstate=disable关闭。

6.       参考

http://www.cnblogs.com/armlinux/archive/2011/11/12/2396780.html

http://unix.stackexchange.com/questions/153693/cant-use-userspace-cpufreq-governor-and-set-cpu-frequency

https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1188647/comments/0

Linux CPU频率控制相关推荐

  1. linux cpu控制软件下载,Linux CPU频率控制

    Linux 内部共有五种对频率的管理策略 userspace , conservative , ondemand , powersave  和  performance. l performance  ...

  2. linux cpu频率软件,linux cpu频率控制

    安装cpufrequtils:  sudo apt-get install cpufrequtils 查看cpu:                 sudo cpufreq-info 设置cpu模式: ...

  3. 【Linux】CPU频率控制|Conflicting CPU frequency values detected

    目录 即看即用 背景 相关/原理: 使用cpupower设置CPU Performance模式 前言 更新历史 cpufreq的五种模式 cpupower设置performance 附录: cpupo ...

  4. linux cpu load 值,理解Linux系统中的load average(图文版)转

    一.什么是load average? linux系统中的Load对当前CPU工作量的度量 (WikiPedia: the system load is a measure of the amount ...

  5. linux判断cpu是否过载,Linux CPU 如何判断忙

    原标题:Linux CPU 如何判断忙 摘录自:http://www.ruanyifeng.com/blog/2016/12/user_space_vs_kernel_space.html 学习 Li ...

  6. linux cpu大小,如何查看linux cpu大小

    有时候想要查看下linux cpu的大小!用什么方法好呢?下面由学习啦小编给你做出详细的查看linux cpu大小方法介绍!希望对你有帮助! 查看linux cpu大小方法一 一.linux CPU大 ...

  7. 校招面试问到Linux CPU不用怕,来看看这份宝典

    校招面试问到Linux CPU不用怕,来看看这份宝典 原创小目网易游戏运维平台 小目 网易游戏资深运维工程师,负责<阴阳师>.<明日之后>等多款游戏运维工作. 又是一年校招季, ...

  8. 慢慢欣赏linux CPU占用率和负载

    CPU使用率如何计算,可以参考busybox的实现 其原理是每隔5s读一次/proc/stat,两次的值相减作为CPU占用率. /proc/stat的含义详见附件. int top_main(int ...

  9. linux php cpu,理解Linux CPU负载和 CPU使用率

    CPU负载和 CPU使用率 这两个从一定程度上都可以反映一台机器的繁忙程度. cpu使用率反映的是当前cpu的繁忙程度,忽高忽低的原因在于占用cpu处理时间的进程可能处于io等待状态但却还未释放进入w ...

最新文章

  1. python 南京大学_南京大学python课程系列笔记之python基础之第一周:走进python
  2. 支付系统整体架构详解
  3. Vivotek 摄像头远程栈溢出漏洞分析及利用
  4. 《剑指offer》c++版本 9. 用两个栈来实现一个队列
  5. 基础连接已经关闭: 无法与远程服务器建立信任关系
  6. [InfoPath] 如何配置实现InfoPath的大小类的联动和信息查询?
  7. Java8 IdentityHashMap 源码分析
  8. 有了Debug权限就能干坏事?小心了,你的一举一动尽在系统监控中
  9. html 模板中的for循环,Flask模板引擎中的For循环
  10. C++ 构造函数分类以及调用
  11. 小米SN保修_首次体验小米手机官方售后全程回顾:维修速度快服务态度好
  12. 在互联网公司工作是种怎样的体验?
  13. 压测 mysql关闭连接_MySQL 压测
  14. php 下载的官方扩展 没有configure文件解决办法
  15. l360清零软件无响应_爱普生L360清零软件
  16. 华为linux不识别U盘启动,华为电脑如何用u盘启动不了怎么办
  17. 计算机的云是什么意思_阿里巴巴计算机云是什么意思
  18. IDEA的粘贴板的一点问题
  19. mysql 按分数段,每个专业分数段统计人数
  20. OKR是上下同欲的载体

热门文章

  1. IT服务工作——好事成双
  2. 达人评测 i5 13500h和i5 12450h选哪个
  3. 微信影视小程序是如何赚钱的?效果怎么样?
  4. Jupyter Notebook修改字体大小、颜色等
  5. mysql 军规_在互联网大厂必须遵守的MySql开发军规
  6. 【数据压缩】C语言实现bmp图片序列生成yuv视频
  7. 软考下午题第1题——数据流,题目分析与案例解析:
  8. python setup.py bdist_wheel生成wheel文件,示例:安装webrtcvad
  9. 【转载】Matlab与C#连接的几种方式比较
  10. 项目管理第十三章项目相关方管理