如何在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输出,注意Active:no在boost状态支持下:

 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实例在后台解码1920×1080 H.264video):

 [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也在使用中,您几乎永远无法获得可用的最高频率。

[更新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发布了一个详细的分析,其中包含(至少对我而言)一些惊喜。 例如,按需performance州长可能比performance差(至少使用里奇兰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的输出相当。 这些工具显示的频率应该反映出提升。
  • 使用标准video驱动程序甚至内核中的radeon模块,我没有成功使A10-6700使用升压频率(使用stress --cpu 2 )。
  • 当ATI / AMD fglrx模块加载到内核中时,处理器将永久性地增加两个核心(显然也是暂时的剩余核心)。 这是在没有使用X甚至配置的情况下测试的。

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

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

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

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

[编辑2014年7月24日]

我现在报告了这个bug 。

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

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

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

愿它对你有所帮助。

我发现的主要开始是,自11.10以来不支持Turbo Core。 这就是我发现的全部。 请certificate我错了。