MENU

Linux CPU频率调整工具

February 29, 2020 • Read: 2750 • Linux阅读设置

现在的CPU耗电很大,按需调节CPU频率对普通桌面及移动设备节能有重要的意义,目前多数Linux发行版都已经默认启用了这个功能,但在一些像数据库,集群系统等特别需要CPU高性能的服务器环境中,Linux提供的这种对CPU频率调节的功能对CPU性能使用受到一些限制,不利于系统性能的更好发挥。

为此需要Linux系统管理员进行必要相关参数优化及设置来确保CPU性能最大化。本文将针对应用中常见的RedHat6、7系列及Debian Gnu/Linux 8系列中CPU频率调整工具的使用进行描述,以方便Linux用户进行该方面工作的优化。

在Linux中,内核的开发者定义了一套框架模型来完成CPU频率动态调整这一目的,它就是CPU Freq系统。尽管在各个Linux发行版中,前端软件稍有差异,但其最终都会通过Linux内核的CPU Freq系统来实现CPU频率动态调整的功能。这些软件都会提供如下CPU模式(governor参数):

ondemand:系统默认的超频模式,按需调节,内核提供的功能,不是很强大,但有效实现了动态频率调节,平时以低速方式运行,当系统负载提高时候自动提高频率。以这种模式运行不会因为降频造成性能降低,同时也能节约电能和降低温度。一般官方内核默认的方式都是ondemand。

interactive:交互模式,直接上最高频率,然后看CPU负荷慢慢降低,比较耗电。Interactive 是以 CPU 排程数量而调整频率,从而实现省电。InteractiveX 是以 CPU 负载来调整 CPU 频率,不会过度把频率调低。所以比 Interactive 反应好些,但是省电的效果一般。

conservative:保守模式,类似于ondemand,但调整相对较缓,想省电就用他吧。Google官方内核,kang内核默认模式。

smartass:聪明模式,是I和C模式的升级,该模式在比interactive 模式不差的响应的前提下会做到了更加省电。

performance:性能模式!只有最高频率,从来不考虑消耗的电量,性能没得说,但是耗电量。

powersave 省电模式,通常以最低频率运行。

userspace:用户自定义模式,系统将变频策略的决策权交给了用户态应用程序,并提供了相应的接口供用户态应用程序调节CPU 运行频率使用。也就是长期以来都在用的那个模式。可以通过手动编辑配置文件进行配置

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

之后我们就可以通过修改相应系统所在配置文件,Debian Gnu/Linux 8、RedHat6以下版本、RedHat7系列版本cpufreq管理软件配置文件分别为:

/etc/init.d/cpufrequtils、/etc/sysconfig/cpuspeed、/etc/sysconfig/cpupower

修改Debian Gnu/Linux 8配置文件中:

GOVERNOR="ondemand"
为:
GOVERNOR="performance"

RedHat6以下版本配置文件中:

GOVERNOR
为
GOVERNOR=performance

RedHat7系列版本配置文件中:

CPUPOWER_STOP_OPTS=”frequency-set -g ondemand”
为:
CPUPOWER_STOP_OPTS=”frequency-set -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)

测试是否生效

#让CPU占用率达到100%
for i in `seq 1 $(cat /proc/cpuinfo |grep "physical id" |wc -l)`; do dd if=/dev/zero of=/dev/null & done
#查看 CPU 目前频率
cat /proc/cpuinfo | grep -i "cpu mhz"
#查看 CPU 核心的实时频率:
watch -n 1 "cat /proc/cpuinfo | grep MHz"
#结束测试
pkill -9 dd
Last Modified: March 1, 2020
Archives QR Code
QR Code for this page
Tipping QR Code