cpu频率

cpu频率

查询当前的CPU频率管理策略:

# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

performance

 

查询频率的管理策略:[root@localhost:/root]

# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors

  conservative userspace powersave ondemand performance

 

管理策略介绍

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

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

 

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

 

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

 

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

 

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

 

 

频率相关的文件

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

查看当前cpu运行的频率
cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq
查看当前CPU能运行的最大频率
cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq
查看当前CPU能运行的最小频率
cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq

 

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

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

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

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

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

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

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

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

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


更改频率

 

  • 第一种方法是用文件进行操作:
    echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
  • 第二中方法是用 cpufreq-set 的工具,可以看 -h 查看帮助文档,-c 是cpu编号,-g 是调节器的模式, 执行这个操作需要 sudo
    sudo cpufreq-set -c 4 -g performance
  • 第三种方法

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

        Usage: cpupower [-d|--debug] [-c|--cpu cpulist ] []

        Supported commands are:

                                            frequency-info

                                            frequency-set

                                            idle-info

                                            idle-set

                                            set

                                            info

                                            monitor

                                            help

          

        比如:

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

                                         cpupower -c all frequency-set -g performance



    

调节完再看频率,就可以看到现在已经是最高频率了

posted @ 2021-11-18 15:43  天人互动  阅读(832)  评论(0)    收藏  举报