Bug 106374 - feature request: allow increasing maxium GPU power consumption like implemented in Wattman on Windows
Summary: feature request: allow increasing maxium GPU power consumption like implement...
Status: RESOLVED FIXED
Alias: None
Product: DRI
Classification: Unclassified
Component: DRM/AMDgpu (show other bugs)
Version: unspecified
Hardware: x86-64 (AMD64) Linux (All)
: medium normal
Assignee: Default DRI bug account
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2018-05-03 12:15 UTC by tempel.julian
Modified: 2018-10-24 20:23 UTC (History)
2 users (show)

See Also:
i915 platform:
i915 features:


Attachments

Description tempel.julian 2018-05-03 12:15:16 UTC
On Windows, the Wattman driver functionality allows to both increase and decrease the GPU power consumption to either 150% or 50% (100% +/- 50%).
There already is such functionality implemented on Linux for the decrease part.
"cat /sys/class/drm/card0/device/hwmon/hwmon0/power1_cap" returns "48000000" for my RX 560, which is the allowed maximum GPU power consumption of 48W.
I can successfully set lower values like e.g. "echo 30000000 > /sys/class/drm/card0/device/hwmon/hwmon0/power1_cap" to set maximum GPU power consumption to 30W.

However, unlike on Windows with Wattman, it's not possible that I can set higher values than "48000000" to increase the maximum allowed power consumption.
For instance, already "echo 49000000 > /sys/class/drm/card0/device/hwmon/hwmon0/power1_cap", which is just 1W above 48W, is forbidden, it just returns "invalid value".
On Windows, Wattman allows setting GPU power consumption to 72W (150%) for my RX 560.

Additionally to "/sys/class/drm/card0/device/hwmon/hwmon0/power1_cap", there also is "/sys/class/drm/card0/device/hwmon/hwmon0/power1_cap_max".
"cat /sys/class/drm/card0/device/hwmon/hwmon0/power1_cap_max" returns "48000000" as well for my card.
However, the value has no setter:
https://cgit.freedesktop.org/~agd5f/linux/tree/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c?h=drm-next-4.18-wip#n1336
Unlike power1_cap, which has amdgpu_hwmon_set_power_cap() as a setter and thus can be adjusted by the user. So, power1_cap_max is read only.

To conclude: There is no way implemented for the user to increase the maximum allowed power consumption.
It would be nice if this would be implemented, as it basically is the only missing piece to adjust the GPU's performance like with Wattman on Windows.
Comment 1 Alex Deucher 2018-05-09 04:48:55 UTC
It is implemented.  power1_cap_min/max are RO.  They define the range of values that are valid for power.  The OEM defines the range and the information is stored in tables in the vbios.  The driver uses that to set the range of valid values.  My understanding is that windows does the same thing.  I'll see if I can find out why you are seeing a different limit on windows.
Comment 2 tempel.julian 2018-05-09 18:28:42 UTC
I suppose the Windows Wattman doesn't consider the values defined by the OEM and instead always allows +75% (not 50% as I mentioned before) on top of the card's value that is defined for 100%:
https://abload.de/img/759nu06.png
Comment 3 tempel.julian 2018-06-16 13:52:55 UTC
I had a Sapphire RX 580 Nitro installed instead of my MSI RX 560 Aero.
The Sapphire card offers two bioses. Under Windows, one allows increasing power up 20%, the other bios up to 50%.
Under Linux, power1_cap_max always showed just the 100% ASIC power value with both bioses. So it seems reading out the max values from the bios just doesn't work with the "Linux Wattman"?
Comment 4 Hugo Sánchez 2018-10-04 17:33:40 UTC
I am having the same issue. That is a big problem cause GPU cannot reach its max power. A RX Vega 64 for example can consume around 300w with OC and the 220w is causing frame drops in the case of games.
Comment 5 tempel.julian 2018-10-24 20:10:03 UTC
It got implemented into 4.21 WIP kernel:
https://cgit.freedesktop.org/~agd5f/linux/commit/?h=drm-next-4.21-wip&id=f7becf9a0803030ae125189823328e2d62b90f7b

I can confirm it works, big thanks @ Joseph Greathouse!


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.