我在基于 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/AMD
fglrx
模块加载到内核后,处理器将永久提升两个核心(显然也会暂时提升剩余的核心)。这是在没有使用或配置 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 不再受支持。这就是我发现的全部内容。请证明我错了。