关于本系列在本系列中,学习如何调整基于 Linux 的 IBM System x 服务器以提高能源效率。您将了解内核调控器及其设置以及如何使用它们;还会看到经过调优的调控器对电源效率和电子商务工作负载的影响。示例使用一个运行 Red Hat Enterprise Linux version 5.2 (RHEL 5.2) 的 System x 服务器,但是原理可以应用于任何 2.6.x 内核以及支持变频的任何处理器类型。 减少 Linux 耗电,第 1 部分:CPUfreq 子系统 介绍系统调优所需的组件和概念,包括 Linux CPUfreq 子系统、C 和 P 状态以及五个内核调控器。 第 2 部分详细介绍 Linux CPUfreq 子系统的一般设置,以及五个内核调控器 — performance、powersave、userspace、ondemand 和conservative — 及其设置。 第 3 部分将对比五个内核调控器在调优和未调优状态下的性能,展示通过系统电源调优可以实现的效果。 CPUfreq 的一般设置我们先来介绍 Linux CPUfreq 子系统的使用设置并提供一些接口选项,看看使用它是多么容易。先讨论一些一般设置:
使用 /sys 接口/sys 文件系统为 CPUfreq 提供用户接口,起点是 /sys/devices/system/cpu/。其中一些文件是可写的(由根用户写),其他文件是只读的。 首先,看看 /sys/devices/system/cpu/。在这里会找到每个逻辑 CPU 的目录和 清单 1. 检查 /sys/devices/system/cpu/ 的内容[root@systemx ~]# cd /sys/devices/system/cpu/ 在每个处理器的目录内是一个 cpufreq 目录,它包含 CPUfreq 接口: 清单 2. 检查 cpufreq 目录[root@systemx cpu]# cd cpu0/cpufreq/ [root@systemx cpufreq]# ls -l total 0 -r--r--r-- 1 root root 4096 Oct 31 14:53 affected_cpus -r-------- 1 root root 4096 Oct 31 14:53 cpuinfo_cur_freq -r--r--r-- 1 root root 4096 Oct 31 14:53 cpuinfo_max_freq -r--r--r-- 1 root root 4096 Oct 31 14:53 cpuinfo_min_freq -r--r--r-- 1 root root 4096 Oct 31 14:53 scaling_available_frequencies -r--r--r-- 1 root root 4096 Oct 31 14:53 scaling_available_governors -r--r--r-- 1 root root 4096 Oct 31 14:53 scaling_cur_freq -r--r--r-- 1 root root 4096 Oct 31 14:53 scaling_driver -rw-r--r-- 1 root root 0 Nov 5 11:44 scaling_governor -rw-r--r-- 1 root root 4096 Oct 31 14:53 scaling_max_freq -rw-r--r-- 1 root root 4096 Oct 31 14:53 scaling_min_freq 加入 My developerWorks 上的绿色组在 GReen IT Report space 和 My developerWorks 上的 Green computing group 讨论与能源、效率和环境相关的主题并分享参考资料。 如果调控器设置为 conservative 或 ondemand,还会在这里看到与调控器同名的目录。我们稍后讨论如何改变调控器。 对于每个调控器,都可以使用这些文件。我们将讨论每个设置的意义以及如何修改它们;然后讨论这个接口之外与调控器相关的一些设置。注意,对于每个处理器,cpufreq 目录下的设置可以不一样,因此要想跨处理器应用一致的策略,就必须按照后面的说明修改每个处理器的设置值。 首先, 清单 3. 检查修改频率会影响哪些处理器[root@systemx ~]# cd /sys/devices/system/cpu [root@systemx cpu]# grep . cpu*/cpufreq/affected_cpus cpu0/cpufreq/affected_cpus:0 1 cpu1/cpufreq/affected_cpus:0 1 cpu2/cpufreq/affected_cpus:2 3 cpu3/cpufreq/affected_cpus:2 3 接下来, 清单 4. 检查频率[root@systemx cpufreq]# cat cpuinfo_cur_freq 2997000 [root@systemx cpufreq]# cat scaling_cur_freq 2997000 这个接口中列出的所有频率都以 KHz 为单位。 下面一些文件提供可用处理器频率的相关信息。 清单 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
清单 6. 检查可用的调控器[root@systemx cpufreq]# cat scaling_available_governors ondemand powersave conservative userspace performance
清单 7. 检查系统正在运行哪个 cpufreq 驱动程序[root@systemx cpufreq]# cat scaling_driver centrino 这个目录中的其他文件可以由根用户写,可以通过它们修改一些 cpufreq 设置。这些文件只包含允许用户修改的 powersave 和 performance 调控器设置。其他调控器有更多设置可用,我们在下一节中讨论。 首先, 清单 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
清单 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 设置文件除了像前面提到的那样直接
这个命令会让新设置生效。请记住,必须装载相应的调控器模块,才能开始使用调控器,除非它已经是内置的。 使用 cpufreq-utilsRHEL 5.2 和其他一些发行版还附带 cpufreq-utils 包,它为 CPUfreq 子系统提供另一个用户接口。大多数其他发行版应该也包含这个包。在安装 cpufreq-utils rpm 时,会得到两个实用程序 cpufreq-info 和 cpufreq-set。 cpufreq-info 实用程序列出处理器的相关信息及其 CPUfreq 设置,比如当前频率、频率限制、CPUfreq 驱动程序、当前策略、当前调控器和 在启用 userspace 调控器时,cpufreq-set 实用程序让用户可以修改每个处理器的可用频率范围、使用的调控器和当前运行频率。更多信息见 cpufreq-info 和 cpufreq-set 手册页。 与调控器相关的设置现在讨论用户可以在内核调控器中修改的设置。 powersave 和 performance 调控器这两个调控器分别把处理器频率静态地设置为最低和最高频率。用户只能修改前一节中讨论的设置。 userspace 调控器现在开始讨论与调控器相关的设置。如果启用 userspace 调控器,还会在 cpufreq 目录中看到 许多守护进程使用 userspace 调控器调整处理器频率;下面是几个例子:
ondemand 调控器如果装载 ondemand 调控器,会在 cpufreq 目录中看到 ondemand 目录。在这个目录中,有许多可调的设置。对于可由根用户写的所有文件,可以通过 清单 10. 检查 ondemand 的可调设置[root@systemx ~]# cd /sys/devices/system/cpu/cpu0/cpufreq/ondemand/ [root@systemx ondemand]# ls -l total 0 -rw-r--r-- 1 root root 4096 Nov 19 10:30 ignore_nice_load -rw-r--r-- 1 root root 4096 Nov 19 10:30 powersave_bias -rw-r--r-- 1 root root 4096 Nov 19 10:30 sampling_rate -r--r--r-- 1 root root 4096 Nov 19 10:30 sampling_rate_max -r--r--r-- 1 root root 4096 Nov 19 10:30 sampling_rate_min -rw-r--r-- 1 root root 4096 Nov 19 10:30 up_threshold
接下来,
最后, conservative 调控器如果装载 conservative 调控器,会在 cpufreq 目录中看到 conservative 目录。在这个目录中,有许多可调的设置。对于可由根用户写的所有文件,可以通过 清单 11. 检查 conservative 的可调设置[root@systemx ~]# cd /sys/devices/system/cpu/cpu0/cpufreq/conservative/ [root@systemx conservative]# ls -l total 0 -rw-r--r-- 1 root root 4096 Nov 19 11:31 down_threshold -rw-r--r-- 1 root root 4096 Nov 19 11:31 freq_step -rw-r--r-- 1 root root 4096 Nov 19 11:31 ignore_nice_load -rw-r--r-- 1 root root 4096 Nov 19 11:31 sampling_down_factor -rw-r--r-- 1 root root 4096 Nov 19 11:31 sampling_rate -r--r--r-- 1 root root 4096 Nov 19 11:31 sampling_rate_max -r--r--r-- 1 root root 4096 Nov 19 11:31 sampling_rate_min -rw-r--r-- 1 root root 4096 Nov 19 11:31 up_threshold
conservative 调控器还允许用户设置
最后, 调度器可调项现在,讨论两个调度器可调项 —
sched_mc_power_savings
清单 12. 检查 sched_mc_power_savings 的位置[root@systemx ~]# cd /sys/devices/system/cpu/ [root@systemx cpu]# ls -l total 0 drwxr-xr-x 5 root root 0 Nov 12 17:45 cpu0 drwxr-xr-x 5 root root 0 Nov 12 17:45 cpu1 drwxr-xr-x 5 root root 0 Nov 12 17:45 cpu2 drwxr-xr-x 5 root root 0 Nov 12 17:45 cpu3 drwxr-xr-x 5 root root 0 Nov 12 17:45 cpu4 drwxr-xr-x 5 root root 0 Nov 12 17:45 cpu5 drwxr-xr-x 5 root root 0 Nov 12 17:45 cpu6 drwxr-xr-x 5 root root 0 Nov 12 17:45 cpu7 -rwxrwxr-x 1 root root 4096 Nov 19 09:54 sched_mc_power_savings
sched_smt_power_savings
清单 13. 检查 sched_smt_power_savings 的位置[root@systemx ~]# cd /sys/devices/system/cpu/ [root@systemx cpu]# ls -l total 0 drwxr-xr-x 5 root root 0 Nov 12 17:45 cpu0 drwxr-xr-x 5 root root 0 Nov 12 17:45 cpu1 drwxr-xr-x 5 root root 0 Nov 12 17:45 cpu2 drwxr-xr-x 5 root root 0 Nov 12 17:45 cpu3 drwxr-xr-x 5 root root 0 Nov 12 17:45 cpu4 drwxr-xr-x 5 root root 0 Nov 12 17:45 cpu5 drwxr-xr-x 5 root root 0 Nov 12 17:45 cpu6 drwxr-xr-x 5 root root 0 Nov 12 17:45 cpu7 -rwxrwxr-x 1 root root 4096 Nov 19 09:54 sched_mc_power_savings -rwxrwxr-x 1 root root 4096 Nov 19 09:54 sched_smt_power_savings 与 结束语在第 3 部分中,我将以两个流行的配置工作负载为例,讨论每个调控器在不同工作负载上可以产生的效果。 参考资料学习
获得产品和技术
讨论
|
|