我计划使用 Debian 设置 AMD APU 系统,但我找不到如何实现最大能效和成功使用 Turbo Core 的提示。特别是,Debian Wiki 如何调整 CPU 频率对于 AMD 系统来说不是很有帮助。
我必须如何设置 Debian 系统才能部署 AMD APU 的功能?
答案1
基本
对于 AMD APU,以下因素值得关注。
如果您的系统仅使用控制台输出,您将需要使用
radeon
驱动程序。与后备驱动器和A10-6700 (Richland)radeon
相比,由驱动器处理的活动控制台将节省 8 W。fglrx
如果控制台空闲,radeon
将额外节省 2 W。AMD APU 的 Turbo Core 功能必须以一种方式启用。与一些人的看法相反,Turbo Core(一旦启用,就是一项自主 APU 功能)在 APU 级别上表现出色,并且具有合理的用例。但驾驶员
radeon
或fglrx
驾驶员必须在场,并且在这两种情况下都必须小心。
如果您认为值得将整个 A10-6700 Richland 系统(包括风扇、DDR3-1866 RAM 和单个 SSD)的空闲功耗从 40 W 降低到 30 W,或者如果您希望获得全 Turbo Core 速度更长(可用的 Turbo Core 频率基于总芯片功耗,包括图形和温度),那么您应该小心。
以上所有陈述都与我之前的分析有关如何设置 Linux 以获得完整的 AMD APU 电源管理支持:Turbo Core、Cool'n'Quiet、动态电源管理?
请注意,您不一定依赖来自/proc
AMD /sys
APU 内核的实际频率的信息。为了安全起见,请在 后使用cpufreq-aperf
(或cpupower frequency-info
或cpupower monitor
) modprobe msr
。
可悲的是,从 Debian Jessie 8.2 开始(包括 Debian Jessie 8.2),您无法通过开箱即用的 Debian 安装获得 AMD APU 的所有功能。
Debian 选项 1:fglrx
潜水员
AMD 的 Linuxfglrx
驱动程序支持 Turbo Core,这不足为奇。
然而,虽然 APU 通过免费的 Linuxradeon
驱动程序显示出非常合理且有用的 Turbo Core 行为,但当您使用fglrx
.司机fglrx
似乎在操纵核心亲和力的进程。也许它甚至取代了 APU 中的微代码。但无论fglrx
细节级别如何工作,您都会得到:
在具有四个核心的 APU 上,如果您有两个需要充分性能的进程,Linux 将在两个单独的 APU 模块上启动它们。 (例如,A10-6700 有两个模块,每个模块有两个内核,虽然每个内核都有一个小型的独立 L3 缓存,但同一模块上的两个内核共享一个 L2 缓存。)这种初始设置将为您提供最大的性能和高电力消耗。 (本例中A10-6700功耗将增加70W。)
但
fglrx
如果 APU 变得太热,会将其中一个进程重新定位到另一个模块的第二个核心。 (与使用两个 APU 模块相比,这将使 A10-6700 功耗降低 25 W。)这样做大概是为了在更长的时间内展示高核心频率。然而,由于二级缓存手头没有任何所需数据,迁移过程很可能会暂时停止,并且通常迁移后的性能会因共享二级缓存而降低。由于
fglrx
在达到 APU 极限之前没有采取任何主动措施来稍微降低核心频率,因此如果进程运行较长时间,它会大幅降低核心速度。这意味着在爆发之后,您将不得不忍受较低的频率,直到您的 APU 冷却下来。
fglrx
除了核心频率演示之外,我认为的行为有些值得怀疑;我相信您会获得更好的整体表现radeon
。但如果如果您想要 2D/3D 系统并发现这种突然的频率缩放行为可以接受,您可以选择fglrx
Debian 7 及以上版本。你fglrx
如果您不打算使用 GNOME 桌面,还可以选择Debian 8。
Debian 选项 2:司机radeon
如前所述,该radeon
驱动程序提供了更低的控制台模式功耗和更流畅的 Turbo Core 体验。你必须付出的代价是更差的 3D 支持。
Debian 6 (Squeeze):即使使用 Linux 3.2 作为向后移植,
radeon
驱动程序也无法处理 APU 的 Turbo Core 功能。Debian 7 (Wheezy):Linux 3.16 可作为向后移植。升级到 Linux 3.16(如果没有其他要求阻止),请参阅下文。
Debian 8 (Jessie):基于 Linux 3.16。见下文。
负责 Turbo Core 处理的标志称为bapm
;它位于驱动程序trinity_dpm.c
的文件中radeon
。在 Linux 3.16 之前,由于某些配置的稳定性问题,它始终被禁用。从 Linux 3.16 开始,计划进行两项更改:
的值
bapm
可以作为模块参数提供(请参阅这里)。对于 Kaveri、Kabini 和桌面 Trinity、Richland 系统,的值
bapm
默认设置为 1(请参阅这里),导致 Turbo Core 被启用。
这意味着,使用当前的 Linux 内核,您很可能会立即获得最佳价值(Turbo Core、节能控制台)(对于当前的 ArchLinux 安装程序来说就是如此)。
令我惊讶的是,即使使用 Debian Jessie 8.2 安装程序,您也需要注意两件事:
根据其政策,Debian 默认情况下不会提供所需的微代码。您需要提供它:将
non-free
和附加到并运行以及contrib
中的相关条目/etc/apt/sources.list
sudo apt-get update
sudo apt-get install firmware-linux-nonfree
有趣的是,尽管 3.16 是默认值,但 Turbo Core 确实不是在最近的 ArchLinux 成功的同一系统上工作。可能是 Debian 3.16 内核太旧而无法合并默认值,或者隔离微代码的 Debian 补丁有一些副作用。无论哪种方式,都可以通过
bapm
在启动时提供一个值来在微代码存在的情况下为 Debian Jessie 启用 Turbo Core : 附加到inradeon.bapm=1
的值并运行GRUB_CMDLINE_LINUX_DEFAULT
/etc/default/grub
sudo update-grub
经过这两次改变后,Turbo Core 和低控制台功耗对我来说就像一个魅力。