Hacky solution to integrate AMDGPU power/clock control into tuned
profiles
with Ansible.
Extends every tuned
profile found in /usr/lib/tuned
with AMDGPU hwmon interfaces in three variations:
default
: the out-of-the-box GPU clock/power configurationoverclock
: the optimized card configuration. Includes profile variables with clock/voltage/power.peak
: the same asoverclock
with gating removed. Intended for profiling.
Contrary to the name, the overclock
profile may also be used to under-{volt,clock}.
Only tested with RX6000
series GPUs and the mainline amdgpu
driver. Other permutations
may not work properly. Please use at your own risk!
Multiple GPUs in a single system are not yet managed, assumes a single GPU with displays attached.
Please report any issues or PRs, all will be considered.
; file: /etc/tuned/amdgpu-profile-vars.conf
tuned_amdgpu_clock_min=500
tuned_amdgpu_clock_max=2715
tuned_amdgpu_memclock_static=1075
tuned_amdgpu_power_multi_def=0.869969040247678
tuned_amdgpu_power_multi_oc=1.0
tuned_amdgpu_mv_offset=+60
These represent the Variables below; changes outside of Ansible are not immediately effective, requiring switching profiles or restarting the service.
The gamemode
service offers dynamic switching. Please see this Arch Wiki document
for more information. Example:
; ~/.config/gamemode.ini snippet
[custom]
start=tuned-adm profile latency-performance-amdgpu-overclock
end=tuned-adm profile latency-performance-amdgpu-default
Two 'profiles' are in each name:
- before
amdgpu
is the source profile provided withtuned
- after
amdgpu
tells the GPU clock profile offered, outlined below
Output profile | Description |
---|---|
balanced-amdgpu-default |
Includes the (assumed) existing balanced tuned profile.Only adjusts the GPU power limit (typically lower). Clocks/voltage curve remain the default. |
desktop-amdgpu-overclock |
Includes the (assumed) existing desktop tuned profile.Adjusts the GPU power limit, clocks, and the voltage curve. |
desktop-amdgpu-peak |
Includes the (assumed) existing desktop tuned profile.Same as the overclock profile, but locks clocks to their highest configured values |
These are the variables you'll want to change/consider.
Variable | Description |
---|---|
tuned_amdgpu_clock_min |
Mininum GPU clock (in Mhz ) for overclock and peak profiles |
tuned_amdgpu_clock_max |
Maximum GPU clock (in MHz ) for overclock and peak profiles |
tuned_amdgpu_mv_offset |
GPU voltage offset. Takes +/- some integer in millivolts to raise or lower. eg: -25 for 0.025V undervolt. |
tuned_amdgpu_power_multi_def |
Float between 0.0 (none) and 1.0 (full); effective power limit relative to board capability. For the default profiles |
tuned_amdgpu_power_multi_oc |
Instance of tuned_amdgpu_power_multi_def for overclock and peak profiles |
tuned_amdgpu_memclock_static |
Static memory clock (in MHz ) for overclock and peak profiles.Not the effective data rate (multiplied by generation), but the actual clock. Static assignment avoids potential display flickering. |