最近,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 性能的性能级别)
答案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
#