如何启用 Radeon 动态电源管理功能?

如何启用 Radeon 动态电源管理功能?

最近,Linux Kernel 3.11 的 RC 发布了。您可能知道,这个新内核为开源 Radeon 驱动程序的用户提供了动态电源管理。由于我在使用 Ubuntu 13.04 的默认内核时遇到了电源管理问题,所以我想尝试一下。

有人知道我从内核测试 PPA 下载并安装最新的内核 RC 后如何启用这个新功能吗?

编辑:更具体地说,我正在谈论这个:http://www.phoronix.com/scan.php?page=news_item&px=MTM5NjE

答案1

更新(2014年8月5日): 正如预期的那样,Ubuntu 14.04 中默认为所有现代 AMD GPU(HD 4000 至 HD 7000 系列)启用了 DPM。如果您将此版本与受支持的显卡一起运行,则无需执行任何操作即可使用此功能。

更新(2013年11月28日): Ubuntu 13.10 默认搭载 3.11 内核。因此,如果您使用此版本,则只需将参数添加到 Linux 内核即可。我相应地更新了指南。此外,看起来到 Ubuntu 14.04 时,DPM 将默认启用,因此希望到那时本指南已经过时!;)

好的,在过去的几天里,我进行了一些实验并启用了它!一旦你找到了如何操作的方法,它实际上真的很容易。对于也想尝试的人,我将解释每个步骤。从安装新内核开始。

首先要考虑几点。Radeon DPM 支持仅适用于 Radeon HD 2000 (R600) 系列显卡及更新版本。如果您使用的是非常老的 ATI Radeon 显卡,则开源驱动程序已经不再支持电源管理。

仅适用于 Ubuntu 13.04 或更低版本的步骤:

要使用 Radeon DPM,您需要 Linux 3.11 内核或更新版本。您可以使用 Ubuntu 主线内核 PPA 并从下载最新的稳定 3.11 Linux 内核映像这个 kernel.ubuntu.com 目录. 任何未来的内核更新也都可以在这个目录中找到。

使用动态电源管理功能需要更新显卡固件。最新的 Radeon 微代码/固件可从以下网址下载此目录. 你需要*_smc.bin6 月份的文件。如果你不确定你的显卡的具体代号,通常可以通过查看lspci -v|更少...文件需要放置在/lib/固件/radeon。如果您尝试在没有固件的情况下使用 Radeon DPM,GPU 的加速功能最终将被禁用。您还需要确保在/lib/固件/radeon 安装>3.11内核 - 它将被自动拉入已安装的映像中。

Ubuntu 13.10 或更低版本,或者 Radeon HD 3000 或更低版本的用户:

Linux 内核 3.13 以下版本或较旧的 GPU 默认不启用 Radeon DPM 支持。您必须添加radeon.dpm=1参数添加到 Linux 内核以在这些情况下启用它。有关在 Ubuntu 上执行此操作的步骤,请参阅Ubuntu 维基关于不同的方式。

安装新内核、更新固件并启用内核参数后,一切就绪了。现在必须重新启动系统,然后可以通过以下方式检查一切是否正常:

猫/ sys /内核/调试/ dri / 64 / radeon_pm_info

笔记:@luca992 指出该文件radeon_pm_info可能位于不同的目录中(例如,位于 /sys/kernel/debug/dri/1/ 而不是 dri/64/)。如果您绝对确定您正确遵循了所有步骤,则可以检查您的情况是否也是如此。

你应该看到类似这样的内容:

uvd    vclk: 0 dclk: 0
power level 0    sclk: 22000 mclk: 25000 vddc: 900

您可以通过打开来进一步配置 DPM/etc/rc.local并添加以下行:

echo parameter > /sys/class/drm/card0/device/power_dpm_state

在哪里“范围”可:

  • 电池(一组旨在实现电池最佳运行的性能水平)
  • 均衡(针对最佳日常使用而设定的性能等级)
  • 表现(一组旨在实现最高 GPU 性能的性能级别)

资料来源: http://www.botchco.com/agd5f/?p=57

答案2

好的,我不再假设您已经拥有内核 3.11-GIT 并且拥有 r6xx-SI 或更新的 ATI 卡。从此以后,您只需将其添加radeom.dpm=1 为内核模块参数,DPM 就会被激活。

它可以在 GRUB 参数中,也可以在/etc/default/grub文件中写入

GRUB_CMDLINE_LINUX_DEFAULT="quiet radeon.dpm=1"
sudo update-grub

或者在.conf你的目录下的文件中/etc/modprobe

sudo su -
touch /etc/modprobe.d/radeon-dpm.conf
echo options radeon dpm=1 > /etc/modprobe.d/radeon-dpm.conf 
cat /etc/modprobe.d/radeon-dpm.conf 
# will output "options radeon dpm=1"

引自以下来源:

AMD Radeon 驱动程序终于支持动态电源管理了!对于 Radeon GPU,核心时钟和内存时钟将根据负载动态调整(以及电压),这适用于多显示器配置,并且其功能几乎与 PowerPlay 和 AMD Catalyst 驱动程序中的功能相同。这对于在使用开源 Radeon Linux 驱动程序时节省电量/电池以及为启动时钟速度低于其额定频率的较新 GPU 提供更好的性能来说是一个很大的优势。此支持可以追溯到 Radeon HD 2000 (R600) GPU,但目前默认情况下未启用,需要设置radeon.dpm=1。

资料来源:

答案3

如果 tlp 满足您的意图:

sudo 添加 apt 存储库 ppa:linrunner/tlp

sudo apt-get 更新

sudo apt-get 安装 tlp tlp-rdw

对于 ThinkPad 来说,它是:

sudo apt-get 安装 tp-smapi-dkms acpi-call-tools

当我没有错的时候 - tlp 并不直接依赖于内核版本 - 它更多地依赖于硬件。内核 3.11 和内核 3.10 之间没有太大区别。

phoronix 的文章中列出了内核 3.11 中的新变化:

http://www.phoronix.com/scan.php?page=news_item&px=MTQwODk

但在 3.11 中,电源管理总体上没有变化。

我认为 Radeon 的动态电源管理变化仅影响显卡的电源支持。

安装后,tlp 将启动:

sudo tlp 启动

答案4

跟踪@Gladen的回答,我发现

echo parameter > /sys/class/drm/card0/device/power_dpm_state

不起作用。快速ls -l /sys/class/drm/向我展示了 card0 指的是集成卡,card1 指的是独立卡。因此,以下操作对我在 card1 上有效:

$ sudo -i

# cat /sys/class/drm/card1/device/power_dpm_state
balanced
# cat /sys/class/drm/card1/device/power_dpm_force_performance_level  
auto
# cat /sys/kernel/debug/dri/1/radeon_pm_info
uvd    vclk: 0 dclk: 0
power level 0    sclk: 15700 mclk: 20000 vddc: 900 vddci: 0
#
# echo "battery" > /sys/class/drm/card1/device/power_dpm_state
# cat /sys/kernel/debug/dri/1/radeon_pm_info
uvd    vclk: 0 dclk: 0
power level 0    sclk: 15700 mclk: 20000 vddc: 900 vddci: 0
#
# echo "low" > /sys/class/drm/card1/device/power_dpm_force_performance_level  
# cat /sys/kernel/debug/dri/1/radeon_pm_info
uvd    vclk: 0 dclk: 0
power level 0    sclk: 15700 mclk: 20000 vddc: 900 vddci: 0
# echo "performance" > /sys/class/drm/card1/device/power_dpm_state
# cat /sys/kernel/debug/dri/1/radeon_pm_info
uvd    vclk: 0 dclk: 0
power level 0    sclk: 15700 mclk: 20000 vddc: 900 vddci: 0
# echo "high" > /sys/class/drm/card1/device/power_dpm_force_performance_level  
-bash: echo: write error: Invalid argument
# # Not sure why the above happened!?
#
# cat /sys/kernel/debug/dri/1/radeon_pm_info
uvd    vclk: 0 dclk: 0
power level 2    sclk: 75000 mclk: 80000 vddc: 1120 vddci: 0
# echo "high" > /sys/class/drm/card1/device/power_dpm_force_performance_level  
#
# echo "battery" > /sys/class/drm/card1/device/power_dpm_state
# cat /sys/kernel/debug/dri/1/radeon_pm_info
uvd    vclk: 0 dclk: 0
power level 0    sclk: 15700 mclk: 20000 vddc: 900 vddci: 0
# 

相关内容