计算机 · 2021年12月10日 0

CPU Speed Governer

可以读下红帽的说明文档以获取更全面和准确的信息。

CPUfreq

CPU的运行频率是可以调节的,在工作负载低的时候可以通过降低CPU运行频率,达到节能、减少CPU发热的目的。CPUfreq大概就是用来设置CPU运行频率的?

CPU speed governer的概念

CPU speed governer就是用来设定CPU应该如何动态调整运行频率。CPU speed governer有以下可选类型:

  1. powersave
    强制CPU以最低频率运行,该最低频率是静态值,一经设定不再改变。该策略最省电,但是在cpu负载高的时候,其耗电却可能反而高于让CPU以更高频率运行。
  2. performance
    总是让CPU以最高频率运行,该最高频率是静态值,一经设定不再改变。
  3. ondemand
    根据系统负载让CPU运行频率在最高和最低两个频率之间切换(要么选最高,要么选最低)。缺点是这个频率切换会有滞后性(latency)。
  4. userspace 允许用户程序来设置CPU运行频率。
  5. conservative 类似ondemand,但是更平滑,根据系统负载选择系统需要的CPU运行频率,不像ondemand只有两个选择,缺点是其滞后性比ondemand更严重。

CPU speed governor的设置

安装CPUfreq驱动,Ubuntu貌似默认带了这个,不需要装。

ls /lib/modules/[kernel version]/kernel/arch/[architecture]/kernel/cpu/cpufreq/

如果需要安装且同时有acpi-cpufreq和p4-clockmod两种驱动,优先安装acpi-cpufreq,因为p4-clockmod只会降频,不能降电压。

查看当前的governor类型:

cpupower frequency-info

查看可用的governor类型:

cpupower frequency-info --governors

可能系统没有提供想要的governor类型,此时需要安装内核模块添加需要的governor类型。内涵模块位于/lib/modules/[kernel version]/kernel/drivers/cpufreq/。

设置governor类型:

cpupower frequency-set --governor [governor]

如果用不了cpupower命令,那么可以通过读写/sys/devices/system/cpu/[cpuid]/cpufreq/里的文件来获取相关信息和修改相关设置。

几个查看cpu信息的命令

cat /proc/cpuinfo
lscpu
lstopo
i7z