CPU变频
引言
在云计算模式下,各种应用的爆发式增长,对数据中心的性能提出了更高的要求,数据中心的规模和数量不断增加,但也带来了严重的能耗管理问题。数据中心的节能问题成为研究热点之一。
数据中心的节能方法包括计算设备节能和冷却系统节能。而在计算设备节能中,有一种使用较为广泛的节能技术,即动态调频调压技术(Dynamic Voltage Frequency Scaling,DVFS),通过调节CPU频率来调节CPU功率,达到节能的目的。
这里介绍CPU变频工具包cpufrequtils及其使用方法。
cpufrequtils
cpufrequtils是用来在线调节cpu时钟频率的工具包,主要包含两个程序:
/usr/bin/cpufreq-info # used to show the general CPU information
/usr/bin/cpufreq-set # used for setting
安装
sudo apt-get install cpufrequtils
sudo yum install -y cpufreq-utils
安装完成后,会在 /sys/devices/system/cpu/cpu%/cpufreq(%为CPU编号)目录下生成如下文件:
查看
执行cpufreq-info命令,显示所有CPU的各种信息,较为重要的有:
- hardware limits:CPU硬件支持的频率最小值-最大值;
- available frequency steps:CPU频率可以被设置的值;
- available cpufreq governors:CPU频率调节策略,包括conservative, ondemand, userspace, powersave, performance, schedutil。
需要注意的是,CPU的频率不能被设置为任意值,必须是available frequency steps中的值,若设置的值 v v v不在其中,系统会选择设置为大于 v v v且在available frequency steps中的最小值。此外,CPU频率设置不会超过其上下限,即 hardware limits。
设置
执行cpufreq-set命令,参数及其含义如下:
常用的命令为:
sudo cpufreq-set -c 0 -g userspace # 将0号CPU的频率控制模式设为用户模式
sudo cpufreq-set -c 0 -f 800000 # 将0号CPU的频率设置为800MHz
这些设置也可以通过写入 /sys/devices/system/cpu/cpu%/cpufreq 目录下的相应文件来实现。
CPU当前频率
有三个文件可以查看CPU当前频率,分别是:
- /proc/cpuinfo
- /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq
- /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
然而,三个文件显示的CPU频率是不同的,查看相关资料,以第二个文件为准。
附
批量设置CPU的shell脚本
#!/bin/bash
for((i=0;i<=31;i++));
do
sudo cpufreq-set -c $i -g userspace
sudo cpufreq-set -c $i -f 1300000
done