如何在 Ubuntu 14.04 上启用 AMD Turbo Core?

如何在 Ubuntu 14.04 上启用 AMD Turbo Core?

我在基于 AMD A8-4500m 的笔记本电脑上使用 Ubuntu 14.04(3.13.0-24-通用内核),最近我注意到 AMD Turbo Core 根本不起作用。在 Windows 上一切正常,但在 Linux 上 CPU 频率无法超过 1.9 GHz(使用 进行检查cpufreq-aperf)。

这是输出cpupower frequency-info,请注意活跃:否在国家大力支持下:

analyzing CPU 0:
  driver: acpi-cpufreq
  CPUs which run at the same hardware frequency: 0
  CPUs which need to have their frequency coordinated by software: 0
  maximum transition latency: 4.0 us.
  hardware limits: 1.40 GHz - 1.90 GHz
  available frequency steps: 1.90 GHz, 1.80 GHz, 1.70 GHz, 1.60 GHz, 1.40 GHz
  available cpufreq governors: conservative, ondemand, userspace, powersave, performance
  current policy: frequency should be within 1.90 GHz and 1.90 GHz.
                  The governor "ondemand" may decide which speed to use
                  within this range.
  current CPU frequency is 1.90 GHz (asserted by call to hardware).
  cpufreq stats: 1.90 GHz:32,63%, 1.80 GHz:0,74%, 1.70 GHz:0,50%, 1.60 GHz:1,20%, 1.40 GHz:64,93%  (9287)
  boost state support:
    Supported: yes
    Active: no
    Boost States: 2
    Total States: 8
    Pstate-Pb0: 2800MHz (boost state)
    Pstate-Pb1: 2300MHz (boost state)
    Pstate-P0:  1900MHz
    Pstate-P1:  1800MHz
    Pstate-P2:  1700MHz
    Pstate-P3:  1600MHz
    Pstate-P4:  1400MHz
    Pstate-P5:  900MHz

更多测试(使用按需调度程序和 3 个 ffmpeg 实例在后台解码 1920x1080 H.264 视频运行):

[m132@m132 turbostat]$ sudo cpupower monitor
[sudo] password for m132: 
     |Mperf               || Idle_Stats         
 CPU | C0   | Cx   | Freq || POLL | C1   | C2   
    0| 97,78|  2,22|  1821||  0,00|  0,00|  0,00
    1| 97,84|  2,16|  1821||  0,00|  0,00|  0,00
    2| 99,22|  0,78|  1807||  0,00|  0,00|  0,00
    3| 99,18|  0,82|  1808||  0,00|  0,00|  0,00
[m132@m132 turbostat]$ sudo ./turbostat 
cor CPU   GHz  TSC time
        1.81 1.90   5**
  0   0 1.81 1.90   5**
  1   1 1.81 1.90
  2   2 1.80 1.90
  3   3 1.81 1.90

编辑:似乎 Trinity 系列处理器在源中有自己的 BAPM 开关。它位于驱动程序/gpu/drm/radeon/trinity_dpm.c并且(在撰写本文时)由于稳定性问题,它仅适用于 MSI 主板。要启用它,请打开此文件,找到以下行:

    pi->enable_bapm = false;

将 false 改为 true,然后编译并安装新内核。现在您应该可以解决内核恐慌问题。请记住,CPU 功率也与 GPU 共享,因此如果 GPU 也在使用中,您几乎永远不会获得可用的最高频率。

答案1

[2015 年更新]

从 Linux 3.16 开始:

  • 的值bapm可以作为模块参数提供(参见这里)。

  • 对于 Kaveri、Kabini 和桌面 Trinity、Richland 系统,其值bapm默认设置为 1(参见这里),从而启用 Turbo Core。

这意味着,使用内核 3.16 或更高版本时,Turbo Core应该radeon在许多情况下,开箱即可使用。

如果你运行 Debian,或者如果你运行 Ubuntu,并且上述情况不适用于你,请参阅如何使用 AMD Turbo Core APU 设置 Debian 系统(专注于 2D 或控制台/服务器)来实现最大的能源和计算效率?

[更新日期:2014 年 8 月 7 日]

我发表了详细分析unix-stackexchange.com其中包含一些惊喜(至少对我来说)。例如,ondemand调速器可能比performance(至少与 Richland A10-6700 相比)更差,并且fglrx显然使用了一些可疑的技巧来改善短期提升,但从长远来看却不得不对此进行补偿。我很高兴我仔细研究了这一点。

[原始答案]

我正在使用 Ubuntu 14.04 Server 配置带有 A10-6700 的系统。

  • 的输出cat /proc/cpuinfo不会、也不会反映任何处理器提升。提升是芯片根据可能复杂的标准自主做出的决定。点击这里阅读
  • 的输出cpufreq-info不会显示可用的提升频率,但 的输出cpupower frequency-info会显示。对于 A10-6700,除了常规的 3700、3400、2700、2300 和 1800 MHz 之外,它还应显示 4300 MHz (Pb0)、4200 MHz (Pb1) 和 3900 MHz (Pb2)。
  • cpufreq-aperf(之后)的输出modprobe msr与 的输出相当cpupower monitor。这些工具显示的频率应该反映出提升。
  • 使用标准视频驱动程序甚至radeon内核中的模块,我都无法让 A10-6700 使用升压频率(使用stress --cpu 2)。
  • 将 ATI/AMDfglrx模块加载到内核后,处理器将永久提升两个核心(显然也会暂时提升剩余的核心)。这是在没有使用或配置 X 的情况下测试的。

请记住,是否提升是由 APU 自主决定的。我目前的猜测是,除非集成图形单元充分初始化,否则 APU 无法决定其当前功耗是否留有提升空间。

使用标准模块时的视频输出与加载 fglrx 时的输出不同。因此,我们只能猜测内核是否可以自行将 APU 置于可能需要的“智能”(功率损耗感知)模式,同时仍使用 VGA 模块。

在解决这个问题之前,我只会加载fglrx。缺点是建造它需要很多东西您不希望它出现在服务器上,并且编译后需要将其删除。

此外,fglrx大小接近 9 MB。这不是问题,但知道在这种情况下它大部分都是无用的东西,这让我很不高兴。

[编辑 2014 年 7 月 24 日]

我现在报告此错误

我注意到还报告了另一个错误:如果你使用fglrx并尝试使用动态电源管理模式。

答案2

我的 Thinkpad 在 Ubuntu 13.10 上运行同样的 AMD A8-4500m 时也遇到了同样的问题。我今天发现了这个问题,但我的英语不太好,所以我看不懂。

https://www.kernel.org/doc/Documentation/cpu-freq/boost.txt

希望对你有帮助。

我发现的主要问题是,自 11.10 以来,Turbo Core 不再受支持。这就是我发现的全部内容。请证明我错了。

相关内容