调整Linux系统CPU频率
2016-03-14
引言: 现在电脑CPU耗电很大,按需调节CPU频率对普通桌面及移动设备节能有重要的意义。Linux提供的对CPU频率调节的功能对CPU性能使用受到一些限制,需要系统管理员对相关参数优化及设置来确保CPU性能最大化。本文对常见的RedHat 6、7系列及Debian Gnu/Linux 8系列中CPU频率调整工具的使用进行描述,以方便Linux用户进行该方面工作的优化。
现在电脑CPU耗电很大,按需调节CPU频率对普通桌面及移动设备节能有重要的意义。目前,多数Linux发行版都已经默认启用了这个功能,但在一些像数据库、集群系统等特别需要CPU高性能的服务器环境中,Linux提供的这种对CPU频率调节的功能对CPU性能使用受到一些限制,不利于系统性能的更好发挥。为此,需要Linux系统管理员对相关参数优化及设置来确保CPU性能最大化。
本文将针对应用中常见的RedHat 6、7系列及Debian Gnu/Linux 8系列中CPU频率调整工具的使用进行描述,以方便Linux用户进行该方面工作的优化。
在Linux中,内核的开发者定义了一套框架模型来完成CPU频率动态调整这一目的,它就是CPUFreq系统。尽管在各个Linux发行版中,前端软件稍有差异,但其最终都会通过Linux内核的CPUFreq系统来实现CPU频率动态调整的功能。这些软件都会提供如下CPU模式(governor参数):
1.ondemand
系统默认的超频模式,按需调节,内核提供的功能,不是很强大,但有效实现了动态频率调节,平时以低速方式运行,当系统负载提高时自动提高频率。以这种模式运行不会因为降频造成性能降低,同时也能节约电能和降低温度。一般官方内核默认的方式都是ondemand。
流畅度:一般,流畅。
2.interactive
交互模式,直接上最高频率,然后看CPU负荷慢慢降低,比较耗电。
流畅度:最高,极流畅。
Interactive是以CPU排程数量而调整频率,从而实现省电。
InteractiveX是以CPU负载来调整CPU频率,不会过度把频率调低。所以比Interactive反应好些,但是省电的效果一般
3.conservative
保守模式,类似于ondemand,但调整相对较缓,想省电就用他吧。Google官方内核,kang内核默认模式。
流畅度:高,流畅。
4.smartass
聪明模式,是I和C模式的升级,该模式在比interactive模式不差的响应前提下,会做到了更加省电。
流畅度:最高,流畅。
5.performance
性能模式,只有最高频率,从来不考虑消耗的电量,性能没的说,但是耗电量……
流畅度:流畅度高于interactive。
6.powersave
省电模式,通常以最低频率运行。
流畅度:极低。
7.userspace
用户自定义模式,系统将变频策略的决策权交给了用户态应用程序,并提供了相应的接口供用户态应用程序调节CPU运行频率使用。也就是长期以来都在用的那个模式。可以通过手动编辑配置文件进行配置。
流畅度:根据设置而定。
8.Hotplug
类似于ondemand,但是CPU会在关屏下尝试关掉一个CPU,并且带有deep sleep,比较省电。
流畅度:一般,流畅。
在进行CPU频率优化之前,我们首先需要使用命令lsmod|grep "acpi_cpufreq"查看内核是否加载了acpi_cpufreq模块,如果加载了此模块,按照一般情况发行版都会将CPU设置为“ondemand”模式。
之后,可以通过命令cat/sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies进一步确认CPU节能模式,但此时用户无法进行修改,需要进行修改必须使用命令安装cpufreq管理软件。在Debian Gnu/Linux下使用如下命令:apt-get install cpufrequtils,在RedHat6一下版本中使用如下命令 :yum install cpuspeed,在RedHat7系列版本中使用如下命令:yum install kernel-tools。之后我们就可以通过修改相应系统所在配置文件并重启相关服务,使CPU按照我们的要求配置参数进行运行。
Debian Gnu/Linux 8、RedHat6一下版本、RedHat7系列版本cpufreq管理软件配置文件分别为/etc/init.d/cpufrequtils、/etc/sysconfig/cpuspeed、/setc/sysconfig/cpupower。修改Debian Gnu/Linux 8配置文件中GOVERNOR="ondemand"为GOVERNOR="performance",RedHat6一下版本配置文件中GOVERNOR为GOVERNOR=performance,RedHat7系列版本配置文件中CPUPOWER_STOP_OPTS=”frequency-set-gondemand”为CPUPOWER_STOP_OPTS=”frequencyset-g performance”。
在Debian Gnu/Linux 8、RedHat6一下版本、RedHat7系列版本中分别执行/etc/init.d/cpufrequtils restart、/etc/init.d/cpuspeed restart、systemctl restart cpupower.service命令即可重启相关cpufreq管理软件。
从 kernel 3.9 开始,名为pstate的新的功率驱动程序将会在以下的驱动程序之前自动为现代的Intel CPU启用。该驱动会优先于其他的驱动程序,因为它是内置驱动,而不是作为一个模块来加载。该驱动自动作用于Sandy Bridge和Ivy Bridge这两个类型的CPU,在该模式下,CPU只能被设置成performance或者powersave模式。如果您在使用这个驱动的时候遇到问题,建议您在Grub的内核参数中对其禁用(即修改/etc/default/grub文 件,在GRUB_CMDLINE_LINUX_DEFAULT= 后添加intel_pstate=disable)。