我曾经在 Governor 上用笔记本电脑工作过ondemand
,根据 CPU 使用率切换 CPU 频率多年来它运行良好,并具有三个非常重要的优点:
- 硬件温度低
- 静音风扇
- 需要时提供高性能
现在我已经升级了我的笔记本电脑(到联想 B5400,英特尔奔腾 3550M) 和系统 (Ubuntu 14.10),我发现:
- 仅
performance
和powersave
调控器可用;ondemand
不再可用和支持 - 设置文件发生了一些变化,因为每次启动时,当前的调节器和最小/最大速度都会恢复为默认值
因此我的系统:
- 仍然让州长回到
performance
,我认为这是错误的 - 无论调节器是什么,cpufreq-info 都会告诉我“频率应在 2.30 MHz 至 2.30 GHz 之间”尽管可用频率从 800MHz 开始
我尝试编辑/etc/init.d/cpufrequtils
定义以下设置:
启用=“真”
GOVERNOR="节能"
MAX_SPEED="2300000"
最小速度="800000"
我也尝试编辑scaling_min_freq
文件/sys/devices/system/cpu/cpu0/cpufreq
并将其设置为 800000。
而且,猜猜看,重新启动系统后,我再次处于performance
频率“在 2.30GHz 和 2.30GHz 之间缩放”的模式。
你能解释一下吗:
a) 在 Ubuntu 14.10 中,最小/最大 CPU 频率的主设置具体在哪里?
b)如何定义频率和调节器以实现与旧产品相同的结果ondemand
?(我想以尽可能低的频率工作,并且只在重载时提高频率)
c)当然以及如何避免重置我所定义的内容。
我将非常感激您的解释。
答案1
对于兼容的处理器,Ubuntu 现在默认使用 intel_pstate CPU 频率调节器,而以前使用 acpi_cpufreq CPU 频率调节器。
intel_pstate 驱动器没有ondemand
模式,但其powersave
模式应与 acpi_cpufreq 模式相同ondemand
。您的系统应powersave
在启动后约 1 分钟通过/etc/init.d/ondemand
脚本默认为模式。最近,该脚本无法正确处理 intel_pstate 情况,但现在应该已针对所有用例进行了修复。参考。
回答您的实际问题:
A.) 主最小和最大频率以百分比数字存储。
cat /sys/devices/system/cpu/intel_pstate/min_perf_pct
cat /sys/devices/system/cpu/intel_pstate/max_perf_pct
这些数字的解释取决于 turbo 启用或禁用标志,在我看来,定义存在不一致。
cat /sys/devices/system/cpu/intel_pstate/no_turbo
以我的 i7-2600K 为例:最小频率 1.6GHz;最大非涡轮频率 3.4GHz;最大涡轮频率 3.8GHz。
因此百分比为:
涡轮关闭:最大 = 100%,最小 = 47.1%
涡轮开启:最大 = 100%,最小 = 42.1%
$ cat /sys/devices/system/cpu/intel_pstate/no_turbo
0
$ cat /sys/devices/system/cpu/intel_pstate/min_perf_pct
42
$ cat /sys/devices/system/cpu/intel_pstate/max_perf_pct
100
和
$ cat /sys/devices/system/cpu/intel_pstate/no_turbo
1
$ cat /sys/devices/system/cpu/intel_pstate/max_perf_pct
100
$ cat /sys/devices/system/cpu/intel_pstate/min_perf_pct
42
B.) intel-pstatepowersave
模式应该相当于 acpi-cpufreqondemand
模式。
C.) 有错误导致您遇到麻烦。还有其他类似的报告。我自己不知道问题的根源,但也有报告称 cpufrequtils 不兼容。我不知道这些报告是否属实,因为我不使用任何此类东西。我只使用最原始级别的 intel-pstate 驱动程序控制。
答案2
我已将其设置.bashrc
为别名(和root
),因为我遇到了类似的问题。
别名如下所示:
alias performance="echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor"
alias powersave="echo powersave > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor"
alias ondemand="echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor"
然后,您可以在控制台powersave
上写入以启用省电选项BASH
。当我想使用特定的缩放调节器时,我将其输入/etc/rc.local
:
#!/bin/sh -e
# rc.local
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
for i in `ls -d /sys/devices/system/cpu/cpu*|grep -v cpufreq|grep -v cpuidle`; do echo ondemand > $i/cpufreq/scaling_governor; done
exit 0
您可能有多个处理器,因此请相应地进行编辑。我懒得写一个简短的脚本,但如果您要求我这样做,我会这样做 :)
编辑:我将脚本添加到/etc/rc.local