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

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

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

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

更新(8-05-2014): 正如预期的那样,在Ubuntu 14.04中默认启用所有现代AMD GPU(HD 4000到HD 7000系列)的DPM。 如果您与支持的图形卡一起运行此版本,则无需执行任何操作即可使用此function。

更新(28-11-2013): 默认情况下,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并从此kernel.ubuntu.com目录下载最新的稳定3.11 Linux内核映像。 任何未来的内核更新都很好,然后也可以在此目录中找到。

使用动态电源管理function需要更新显卡固件。 可以从此目录下载最新的Radeon微码/固件。 您需要6月份的* _smc.bin文件。 如果您不确定您的特定显卡代号,通常可以通过查看lspci -v的输出来找到它 less …文件需要放在/ lib / firmware / radeon中 。 如果您尝试在没有固件的情况下使用Radeon DPM,则最终将禁用GPU的加速。 安装> 3.11内核之前,还需要确保在/ lib / firmware / radeon中有更新的固件 – 它将自动拉入已安装的映像中。

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

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

安装新内核,更新固件并启用内核参数后,您应该很高兴。 您现在必须重新启动系统,然后通过执行操作检查一切是否正常

cat / sys / kernel / debug / 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 

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

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

“参数”可以是:

  • 电池 (一组针对电池优化操作的性能水平)
  • 平衡 (一组针对最佳日常使用的性能水平)
  • 性能 (针对最高GPU性能的一组性能级别)

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

好吧,我将从你已经拥有内核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 

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

 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提供的function和AMD Catalyst驱动程序中的function相近。 在使用开源Radeon Linux驱动程序时,这是节省电源/电池的一大胜利,同时为启动时钟速度低于其额定频率的新GPU提供更好的性能。 此支持可追溯到Radeon HD 2000(R600)GPU,但默认情况下当前未启用,但需要设置radeon.dpm = 1。

资料来源:

如果tlp符合您的意图:

sudo add-apt-repository ppa:linrunner / tlp

sudo apt-get update

sudo apt-get install tlp tlp-rdw

对于thinkpads,它是:

sudo apt-get install tp-smapi-dkms acpi-call-tools

什么时候没有错 – tlp不是立即依赖于内核版本 – 它更多地依赖于硬件。 在内核3.11和内核3.10之间没有明显的差异。

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

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

但在3.11中,电源管理一般没有变化。

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

安装完成后,tlp将以:

sudo tlp start

除了Gladen的回答之外我还以为我会另外提交一份关于validationdpm的工作是为了拯救他人一些挫败感。

在我的情况下

 cat /sys/kernel/debug/dri/64/radeon_pm_info 

不存在所以我认为dpm不起作用。

但显然该文件只是在我不同的文件夹中。

 cat /sys/kernel/debug/dri/65/radeon_pm_info 

要么

 cat /sys/kernel/debug/dri/1/radeon_pm_info 

两者都存在并列出相同的信息。

根据@Gladen的回答,我发现了

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

没用。 快速ls -l /sys/class/drm/告诉我,card0指的是集成卡和卡1到离散卡。 所以以下内容适用于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 #