cpufreq 的性能调节器似乎没有像宣传的那样运行

cpufreq 的性能调节器似乎没有像宣传的那样运行

使用的内核:Ubuntu 12.04LTS 上的 3.2.0-23-generic

例如,我发出以下命令:

sudo cpufreq-set -c 0 -g performance

然后我进入/sys/devices/system/cpu/cpu0/cpufreq并输入以下内容:

sudo cat cpuinfo_cur_freq

有时我这样做会得到最大频率(3600 MHz),有时我会得到最小频率(1600 MHz)。

如果我做:

cat scaling_governor

输出为performance,表明调节器实际上已设置为性能。

然后,更奇怪的是,如果我这样做:

cpufreq-info

我得到:

analyzing CPU 0:
  driver: acpi-cpufreq
  CPUs which run at the same hardware frequency: 0 1 2 3 8 9 10 11
  CPUs which need to have their frequency coordinated by software: 0
  maximum transition latency: 10.0 us.
  hardware limits: 1.60 GHz - 3.60 GHz
  available frequency steps: 3.60 GHz, 3.60 GHz, 3.47 GHz, 3.33 GHz, 3.20 GHz, 3.07 GHz, 2.93 GHz, 2.80 GHz, 2.67 GHz, 2.53 GHz, 2.40 GHz, 2.27 GHz, 2.13 GHz, 2.00 GHz, 1.87 GHz, 1.73 GHz, 1.60 GHz
  available cpufreq governors: conservative, ondemand, userspace, powersave, performance
  current policy: frequency should be within 3.60 GHz and 3.60 GHz.
                  The governor "performance" may decide which speed to use
                  within this range.
  current CPU frequency is 3.60 GHz.
...

如果您查看上面的当前策略,您会注意到它告诉我 CPU 应固定在 3.60 GHz。然而,cpuinfo_cur_freq似乎讲述了一个不同的故事。

答案1

遗憾的是,在 12.04 中,会cpufreqd-deamon覆盖您在其他应用程序中所做的任何设置,无论是在cpufreq-cli还是在 中Unity-applet。我在浏览 Ubuntu 文档时发现的最简单的解决方案是编辑/etc/cpufreqd.conf并首先添加一个名为 On Demand 的配置文件,如下所示:

[Profile]
name=On Demand
minfreq=10%
maxfreq=100%
policy=ondemand
[/Profile]

然后您需要向下滚动经过#basic 状态,并选择新的 On Demand 配置文件作为所有 Basic 状态的配置文件。

当前的问题是cpufreqd轮询acpiAC 状态,注意到 AC 已连接,然后将 CPU 调节器设置为性能,因为这是配置文件中基本规则中设置的。它根本不在乎您是通过命令行还是通过 Unity 中的缩放小程序选择了另一个调节器。

记得跑

sudo service cpufreqd restart

编辑配置文件后。

有趣的事实:cpufreqd如果我在 Unity 小程序中选择了性能调节器,它似乎不会覆盖我。但在我编辑配置文件之前,它总是会覆盖我对按需的选择,并返回到性能。我不知道为什么。

我使用 powernow-k8 驱动程序,如果这对以后阅读此答案的任何人来说都意味着什么的话。

注意:Ubuntu 文档严重缺乏关于cpufreqd(同样),并且可能有更好/更简单/ GUI 的解决方案来解决该问题。

答案2

如果您发现 CPU 频率暂时下降,这可能是因为 CPU 已达到热极限,因此会降低频率直至温度下降。这只是猜测。

相关内容