host_vars | ||
inventories | ||
roles/tuned_amdgpu | ||
.gitignore | ||
ansible.cfg | ||
LICENSE | ||
playbook.yml | ||
power_max multi tab calculator.ods | ||
README.md |
tuned-amdgpu
Hacky solution to integrate AMDGPU power/clock control into tuned
profiles
with Ansible.
Extends every tuned
profile found in /usr/lib/tuned
using the AMDGPU hwmon interfaces:
default
: the out-of-the-box GPU clock/power configurationoverclock
: the optimized card configuration. Includes the clock/voltage/power settings outlined below.peak
: the same asoverclock
, but with clock gating removed. May help profiling.
Contrary to the name, the overclock
profiles can be used to de-tune the card as well.
Assumptions / Limitations
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.
Profiles
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 |
Config
Preview:
; 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.
These require switching profiles or restarting the tuned
service.
The gamemode
service offers dynamic switching, example:
; ~/.config/gamemode.ini snippet
[custom]
start=tuned-adm profile latency-performance-amdgpu-overclock
end=tuned-adm profile latency-performance-amdgpu-default
Please see this Arch Wiki link for more information.
Variables
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. |