You are not logged in.

#1 2024-02-15 11:04:29

baal
Member
Registered: 2023-11-02
Posts: 32

AMD gpu clock stucks regardless demand

My gpu fails to adjust clock according to demand.
I tried to echo ‘low’, ‘high’ and ‘auto’ into /sys/class/drm/card1/device/power_dpm_force_performance_level

With ‘low’: the gpu clock is 300 MHz regardless the demand. This is expected.
With ‘high’: the gpu clock is 800 MHz regardless the demand. This is expected.
With ‘auto’: the gpu clock is whatever MHz was active previously, regardless of demand. This is unexpected; I would expect the clock to change according to demand.

Further note is that after a fresh system restart with the default ‘auto‘ setting the gpu clock changes according to demand as expected. However, after *some number of system-to-ram/resume cycles*, the gpu clock stucks.

The system is up to date. I run the amdgpu driver. I have these kernel parameters:  radeon.si_support=0 amdgpu.si_support=1

Any hints to sort this would be appreciated. Further info below.

Kernel: 6.7.4-arch1-1 arch: x86_64 bits: 64  Desktop: Xfce v: 4.18.1 Distro: Arch Linux
Graphics:
  Device-1: AMD Pitcairn LE GL [FirePro W5000] vendor: Dell driver: amdgpu
    v: kernel arch: GCN-1 bus-ID: 03:00.0 temp: 48.0 C
  Display: x11 server: X.Org v: 21.1.11 driver: X: loaded: amdgpu
    unloaded: modesetting dri: radeonsi gpu: amdgpu resolution: 1: 1600x1200~60Hz
    2: 3840x2160
  API: EGL v: 1.5 drivers: radeonsi,swrast platforms:
    active: x11,surfaceless,device inactive: gbm,wayland
  API: OpenGL v: 4.6 compat-v: 4.5 vendor: amd mesa v: 23.3.5-arch1.1
    glx-v: 1.4 direct-render: yes renderer: ATI FirePro W5000 (radeonsi pitcairn
    LLVM 16.0.6 DRM 3.57 6.7.4-arch1-1)
  API: Vulkan v: 1.3.276 drivers: radv surfaces: xcb,xlib devices: 1

Offline

#2 2024-10-10 08:23:08

garfieldlasagne
Member
Registered: 2024-10-10
Posts: 2

Re: AMD gpu clock stucks regardless demand

Hello, sorry to necro an old post but I was curious as to whether you ever figured this out? I am experiencing the same issue with my AMD Radeon R9 M370X which sounds like it has similar specs to your card (although was produced later).

I was able to get the GPU clocks scaling correctly out of the box with a standard Bazzite distro install but have not been successful in replicating that with any other distro. Otherwise my symptoms are the same, clocks get stuck on 'low' or 'high' but sometimes on a reboot with 'auto' most recently set it will actually pick it up and scale correctly... until the next reboot when the old behaviour returns. sad

Offline

#3 2024-10-24 19:12:47

baal
Member
Registered: 2023-11-02
Posts: 32

Re: AMD gpu clock stucks regardless demand

Hi,

I could not manage to fix it. If I notice that the playback is choppy or the browser becomes slow I turn off the clock throttling by going to:

cd /sys/class/drm/card1/device

(card1 was form me in the path; it may have a different number for you.)

and tweak the power performance level like this:

echo 'high' > power_dpm_force_performance_level

By echoing 'low' instead of 'high' you can decrease the clock. It accepts 'auto' as well, but sometimes 'auto' works, sometimes it does not. (It accepts it, but does not behave as it should.)

I had to enter root to be able to do this ('sudo su').

Offline

#4 2024-10-25 02:59:31

garfieldlasagne
Member
Registered: 2024-10-10
Posts: 2

Re: AMD gpu clock stucks regardless demand

Thank you for getting back to me. I am also able to pass the 'high' and 'low' commands like you've mentioned, and 'auto' doesn't work while the clocks are stuck. I prefer not to run the clocks at max because the laptop starts overheating and the fans make a lot of noise, which is frustrating when whatever I am doing is not that graphically challenging (but still requires more than minimum clocks).

However, similarly to you, I've found that changing these settings and rebooting will somehow trigger the right circumstances for the power management to activate properly, and the clocks then scale as expected. Even setting 'high' then 'auto' will cause 'auto' to work as expected while the system is booted in this happy state.

For now my best workaround is running a shell script on shutdown that changes the clock settings around in the hope that upon reboot it will trigger the power management to activate.

            echo "high" | tee  /sys/class/drm/card0/device/power_dpm_force_performance_level
            echo "performance" | tee  /sys/class/drm/card0/device/power_dpm_state
            echo "Set AMDGPU performance_level to high"
            echo "auto" | tee  /sys/class/drm/card0/device/power_dpm_force_performance_level
            echo "balanced" | tee  /sys/class/drm/card0/device/power_dpm_state
            echo "Set AMDGPU performance_level to defaults"

I would love to know what Bazzite has done to make this card work with power management consistently, and have spent quite a bit of time going through their Github repo, but can't figure it out. May be a side effect of something else they are doing rather than a specific fix for these cards.

Offline

Board footer

Powered by FluxBB