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

Modified on: Mon, 18 Jun 2018 00:45:53 +0800

我在基于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

更多测试(使用ondemand调度程序和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交换机。它位于drivers / gpu / drm / radeon / trinity_dpm.c中,并且由于稳定性问题,它(在编写本文时)仅针对MSI板启用。要启用它,请打开此文件,找到以下行:

    pi->enable_bapm = false;

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

作者:,M132

最佳答案

[2015年更新]

从Linux 3.16开始:

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

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

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

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

[2014年8月至2007年8月更新]

我在unix-stackexchange.com 上发布了详细分析(至少对我来说)一些惊喜。例如ondemand调控器可能比performance(至少使用Richland A10-6700)和fglrx显然使用一些可疑的技巧来改善短期的提振,从长远来看突然不得不弥补。我很高兴我仔细看了一下。

[原始答案]

我正在使用Ubuntu 14.04服务器配置带有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 / AMD fglrx模块加载到内核中时,处理器将永久性地增强两个核心(显然也是暂时的剩余核心)。这是在没有使用X甚至配置的情况下测试的。

请记住,支持或反对提升的决定由APU自主决定。我在这个时间点的猜测是,除非集成图形单元已经充分初始化,否则APU无法确定其当前的功耗是否会为增强提供空间。

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

在这个问题得到解决之前,我只需加载fglrx。缺点是构建它需要很多东西,你不需要在服务器上,需要在编译后删除。

此外,fglrx的大小几乎为9 MB。这不是问题,但在这种情况下知道它主要是死货并不会让我太开心。

[编辑2014年7月24日]

我现在报告此错误

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

作者:Community,Run CMD

相关问答

添加新评论