清单 5. 检查最大、最小和可用频率

[root@systemx cpufreq]# cat cpuinfo_max_freq

2997000

[root@systemx cpufreq]# cat cpuinfo_min_freq

1998000

[root@systemx cpufreq]# cat scaling_available_frequencies

2997000 2664000 2331000 1998000

scaling_available_governors 文件列出可用的所有调控器。如果没有看到全部五个调控器,要检查在配置文件中是否启用了所有调控器并确保按第 1 部分中的说明装载了调控器的模块。

清单 6. 检查可用的调控器

[root@systemx cpufreq]# cat scaling_available_governors

ondemand powersave conservative userspace performance

scaling_driver 文件说明系统正在运行哪个 cpufreq 驱动程序。典型的驱动程序包括 acpi、speedstep-smi、speedstep-centrino、powernor_k8、powernow_k7、longhaul 等。如果希望改变驱动程序,需要先卸载正在使用的驱动程序,然后再装载另一个驱动程序。另外,在使用之前,一定要检查驱动程序是否适用于您的处理器。

清单 7. 检查系统正在运行哪个 cpufreq 驱动程序

[root@systemx cpufreq]# cat scaling_driver

centrino

这个目录中的其他文件可以由根用户写,可以通过它们修改一些 cpufreq 设置。这些文件只包含允许用户修改的 powersave 和 performance 调控器设置。其他调控器有更多设置可用,我们在下一节中讨论。

首先,scaling_governor 文件显示当前启用的调控器。要想改变调控器,只需把新调控器的名称 echo 到这个文件中。注意,要想应用一致的策略,必须对每个处理器这么做。例如:

清单 8. 检查启用的调控器并改变调控器

[root@systemx ~]# cd /sys/devices/system/cpu/

[root@systemx cpu]# ls

cpu0 cpu1 cpu2 cpu3 cpu4 cpu5 cpu6 cpu7 sched_mc_power_savings

[root@systemx cpu]# cat cpu0/cpufreq/scaling_governor

performance

[root@systemx cpu]# echo conservative > cpu0/cpufreq/scaling_governor

[root@systemx cpu]# cat cpu0/cpufreq/scaling_governor

conservative

scaling_max_freq 和 scaling_min_freq 文件显示调控器可用的最大和最小频率。通过把一个可用的频率 echo 到这些文件中,用户可以修改调控器可用频率的范围。注意,这个频率必须是 scaling_available_frequencies 中列出的频率之一,因为这些是系统可用的所有处理器频率。同样,必须对每个处理器这么做。例如:

清单 9. 修改调控器可用的频率

[root@systemx ~]# cd /sys/devices/system/cpu/

[root@systemx cpu]# cat cpu0/cpufreq/scaling_available_frequencies

2997000 2664000 2331000 1998000

[root@systemx cpu]# cat cpu0/cpufreq/scaling_max_freq

2997000

[root@systemx cpu]# cat cpu0/cpufreq/scaling_min_freq

1998000

[root@systemx cpu]# echo 2331000 > cpu0/cpufreq/scaling_min_freq

[root@systemx cpu]# cat cpu0/cpufreq/scaling_min_freq

2331000

使用 cpuspeed 设置文件

除了像前面提到的那样直接 echo 设置值,用户还可以使用 cpuspeed 设置文件修改驱动程序、调控器、最大速度、最小速度、利用率阈值和 ignore_nice_load 设置。RHEL 5.2 附带 cpuspeed,但是其他 Linux 发行版可能不包含这个包。如果您的发行版不包含 cpuspeed,可以 下载 carlthompson.net 版本;README 中提供安装说明。要想使用 cpuspeed 的 RHEL 5.2 版本,只需编辑 /etc/sysconfig/cpuspeed 文件,在文件中设置任何变量值,然后执行以下命令:

/etc/init.d/cpuspeed restart

这个命令会让新设置生效。请记住,必须装载相应的调控器模块,才能开始使用调控器,除非它已经是内置的。

使用 cpufreq-utils

RHEL 5.2 和其他一些发行版还附带 cpufreq-utils 包,它为 CPUfreq 子系统提供另一个用户接口。大多数其他发行版应该也包含这个包。在安装 cpufreq-utils rpm 时,会得到两个实用程序 cpufreq-info 和 cpufreq-set。

cpufreq-info 实用程序列出处理器的相关信息及其 CPUfreq 设置,比如当前频率、频率限制、CPUfreq 驱动程序、当前策略、当前调控器和 affected-cpus 列表。

在启用 userspace 调控器时,cpufreq-set 实用程序让用户可以修改每个处理器的可用频率范围、使用的调控器和当前运行频率。更多信息见 cpufreq-info 和 cpufreq-set 手册页。

与调控器相关的设置

现在讨论用户可以在内核调控器中修改的设置。

powersave 和 performance 调控器

这两个调控器分别把处理器频率静态地设置为最低和最高频率。用户只能修改前一节中讨论的设置。

userspace 调控器


相关内容