从 2.6.0 Linux 内核开始,您可以通过 CPUfreq
子系统动态调整处理器频率。当处理器以较低的时钟速度运行时,它们消耗的电能和产生的热量也相对较少。时钟速度的这种缩放可以控制系统在未全力运行时消耗较少电能。
CPUfreq
结构利用调控器和守护程序来为系统设置静态或动态电源策略。动态调节器可以根据 CPU 利用率来调整 CPU
频率,从而有助于节省电能,而不会牺牲性能。这些调节器还允许一些用户调优,因此您可以自定义并轻松地更改变频系数。
CPUfreq 是一个动态调整cpu频率的模块,系统启动时生成一个文件夹/sys/devices/system/cpu/cpu0/cpufreq/,里面有几个文件,
其中scaling_min_freq代表最低频率,scaling_max_freq代表最高频率,scalin_governor代表cpu频率调整模式,用它来控制CPU频率
其中
1,performance :顾名思义只注重效率,将CPU频率固定工作在其支持的最高运行频率上,而不动态调节。
2,powersave:将CPU频率设置为最低的所谓“省电”模式,CPU会固定工作在其支持的最低运行频率上。因此这两种governors 都属于静态governor,即在使用它们时CPU 的运行频率不会根据系统运行时负载的变化动态作出调整。这两种governors 对应的是两种极端的应用场景,使用performance governor 是对系统高性能的最大追求,而使用powersave governor 则是对系统低功耗的最大追求。
3,Userspace:最早的cpufreq 子系统通过userspace governor为用户提供了这种灵活性。系统将变频策略的决策权交给了用户态应用程序,并提供了相应的接口供用户态应用程序调节CPU 运行频率使用。也就是长期以来都在用的那个模式。可以通过手动编辑配置文件进行配置
4, ondemand 快速动态调整CPU频率, 一有cpu计算量的任务,就会立即达到最大频率运行,等执行完毕就立即回到最低频率; ondemand:userspace是内核态的检测,用户态调整,效率低。而ondemand正是人们长期以来希望看到的一个完全在内核态下工作并且能够以更加细粒度的时间间隔对系统负载情况进行采样分析的governor。
5, conservative 与ondemand不同,平滑地调整CPU频率,适合于用电池工作时。会自动在频率上下限调整,和ondemand的区别 在于它会按需分配频率,而不是一味追求最高频率;
为确保接下来的工作是有意义的,首先查看您的CPU频率调节功能是否已经启用~
# cd
/sys/devices/system/cpu/cpu0
# ls -l
如果你看到一个名为cpufreq的文件夹,则说明频率调节功能已经启用
查看当前的调节器:
# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
更改使用的调节器,需再更改scaling_governor文件:如
# echo conservative > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
调节器模式改为conservative