[转帖]Linux CPU频率控制

linux,cpu,频率,控制 · 浏览次数 : 0

小编点评

## CPU频率相关知识点与官方知识档案匹配 **文章知识点与官方知识档案匹配** * **Linux入门初识Linux29001**: CPU频率相关知识点与官方知识档案匹配,可进一步学习相关知识。 * **CPU频率相关知识点与官方知识档案**: 提供一些关于CPU频率相关知识点的文章知识点与官方知识档案匹配,可进一步学习相关知识。 **其他相关资源** * **cnblogs.com**:文章知识点与官方知识档案匹配,可进一步学习相关知识。 * **unix.stackexchange.com**:问题和答案,可获取一些关于CPU频率相关问题的答案。 * **bugs.launchpad.net**:ubuntu发行版的 bug列表,可获取一些关于CPU频率相关问题的 bug。 **总结** * CPU频率相关知识点与官方知识档案匹配,可进一步学习相关知识。 * 提供一些关于CPU频率相关问题的文章知识点与官方知识档案匹配,可进一步学习相关知识。 * 其他相关资源,可帮助用户进一步学习相关知识。

正文

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


文章知识点与官方知识档案匹配,可进一步学习相关知识
CS入门技能树Linux入门初识Linux29001 人正在系统学习中

与[转帖]Linux CPU频率控制相似的内容:

[转帖]Linux CPU频率控制

1. 概述 Linux 内部共有五种对频率的管理策略 userspace , conservative , ondemand , powersave 和 performance。 l performance : CPU 会固定工作在其支持的最高运行频率上; l powersave : CPU 会固定

[转帖]Linux:CPU频率调节模式以及降频方法简介

概述 cpufreq的核心功能,是通过调整CPU的电压和频率,来兼顾系统的性能和功耗。在不需要高性能时,降低电压和频率,以降低功耗;在需要高性能时,提高电压和频率,以提高性能。 cpufreq 是一个动态调整cpu频率的模块,系统启动时会生成一个文件夹 /sys/devices/system/cpu

[转帖]谁动了我的 CPU 频率 —— CPU 性能之迷 Part 2

https://www.modb.pro/db/555819 目录: 为何有本文 什么是动态 CPU 频率 什么是 p-state Linux CPU 性能伸缩(CPU performance scaling) 非 Intel CPU 的 boost 的 sysfs 文件接口 performance

[转帖]推荐一款Linux下监控CPU温度、频率、功耗的工具:s-tui

https://aijishu.com/a/1060000000216862 这两天我手头正好有一台配置较高的工作站,2颗Xeon Gold 6258R 28核CPU、1TB(1024GB)内存,跑了下功耗压测。 在Windows下我习惯用AIDA64、Hwinfo这些监控软件。Linux下能看CP

[转帖]s-tui:在 Linux 中监控 CPU 温度、频率、功率和使用率的终端工具

https://linux.cn/article-10467-1.html | 2019-01-22 23:44 一般每个 Linux 管理员都会使用 lm_sensors 监控 CPU 温度。lm_sensors (Linux 监控传感器)是一个自由开源程序,它提供了监控温度、电压和风扇的驱动和工

【转帖】linux 调优篇 :硬件调优(BIOS配置)* 壹

一. 设置内存刷新频率为Auto二. 开启NUMA三. 设置Stream Write Mode四. 开启CPU预取配置五. 开启SRIOV六. 开启SMMU 通过在BIOS中设置一些高级选项,可以有效提升虚拟化平台性能。表1列出了TaiShan服务器和性能相关的BIOS推荐配置项。 表1 BIOS性

[转帖]linux 调优篇 :硬件调优(BIOS配置)* 壹

https://blog.csdn.net/tony_vip?type=blog 一. 设置内存刷新频率为Auto二. 开启NUMA三. 设置Stream Write Mode四. 开启CPU预取配置五. 开启SRIOV六. 开启SMMU 通过在BIOS中设置一些高级选项,可以有效提升虚拟化平台性能

[转帖]Linux—CPU核数、上下文切换介绍及pidstat等命令详解

https://www.jianshu.com/p/0ae0c1153c34 关注:CodingTechWork,一起学习进步。 引言 并发编程 并发编程的目的是为了改善串行程序执行慢问题,但是,并不是启动更多线程就能够让程序执行更快。因为在并发时,容易受到软硬件资源等限制,从而导致上下文切换慢,频

[转帖]linux sysbench (一): CPU性能测试详解

http://t.zoukankan.com/fzxiaomange-p-sysbench-cpu.html 网上sysbench教材众多,但没有一篇中文教材对cpu测试参数和结果进行详解。本文旨在能够让读者对sysbench的cpu有一定了解。 小慢哥的原创文章,欢迎转载 1.sysbench基础

[转帖]linux 查看CPU 内存的信息

https://bbs.huaweicloud.com/blogs/302929 【摘要】 ECS信息规格:2vCPUs | 4GiB | kc1.large.2镜像:openEuler 20.03 64bit with ARM | 公共镜像 linux 查看CPU 内存 硬盘的信息 查看CPU的信