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

m13*_*132 9 ati cpufreq turbo-boost boost

我在基于 AMD A8-4500m 的笔记本电脑上使用 Ubuntu 14.04(3.13.0-24-generic kernel),我最近注意到,AMD Turbo Core 根本不工作。一切都在 Windows 上运行,但是,在 Linux 上 CPU 频率不能超过 1.9 GHz(使用 进行检查cpufreq-aperf)。

这是 的输出cpupower frequency-info,注意Active: no under boost state support:

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
Run Code Online (Sandbox Code Playgroud)

更多测试(使用按需调度程序和 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
Run Code Online (Sandbox Code Playgroud)

编辑:似乎 Trinity 系列处理器在源代码中具有自己的 BAPM 开关。它位于drivers/gpu/drm/radeon/trinity_dpm.c并且(在撰写本文时)仅对MSI 板启用,因为稳定性问题。要启用它,打开这个文件,找到这一行:

    pi->enable_bapm = false;
Run Code Online (Sandbox Code Playgroud)

将 false 更改为 true,然后编译并安装新内核。你现在应该让内核恐慌提升工作。请记住,CPU 功率也与 GPU 共享,因此如果同时使用 GPU,您几乎永远不会获得可用的最高频率。

Run*_*CMD 5

[2015 年更新]

从 Linux 3.16 开始:

  • 的值bapm可以作为模块参数提供(请参阅此处)。

  • bapm对于 Kaveri、Kabini 和桌面 Trinity、Richland 系统(参见此处),默认情况下的值设置为 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 服务器配置带有 A10-6700 的系统。

  • 的输出cat /proc/cpuinfo不会也不会反映任何处理器提升。提升是基于潜在复杂标准的芯片自主决策。在这里阅读
  • cpufreq-infowill的输出不显示可用的升压频率,而是cpupower frequency-infowill的输出。对于 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并尝试使用动态电源管理模式。