Skip to content

AMDGPU power/clock control with templated 'tuned' profiles

License

Notifications You must be signed in to change notification settings

joshlay/tuned-amdgpu

Repository files navigation

tuned-amdgpu

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 configuration
  • overclock: the optimized card configuration. Includes profile variables with clock/voltage/power.
  • peak: the same as overclock with gating removed. Intended for profiling.

Contrary to the name, the overclock profile may also be used to under-{volt,clock}.

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.

Config

; 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

Profiles

Two 'profiles' are in each name:

  • before amdgpu is the source profile provided with tuned
  • 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

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.

About

AMDGPU power/clock control with templated 'tuned' profiles

Resources

License

Stars

Watchers

Forks