sibradzic / amdgpu-clocks

Simple script to control power states of amdgpu driven GPUs
GNU General Public License v2.0
394 stars 44 forks source link

amdgpu-clocks doesn't automatically apply settings with systemd #45

Closed spagootie closed 2 years ago

spagootie commented 2 years ago

I'm on Arch Linux x86_64, and the amdgpu-clocks service dowsn't seem to apply automatically when I start my system, or at least something reverts the GPU to normal states. It works fine if I run sudo amdgpu-clocks or systemctl restart amdgpu-clocks, but if I log out and log back in, the GPU goes back to normal. I'm running sway with sddm as my login manager, so maybe Wayland startup has something to do with it?

sibradzic commented 2 years ago

please share the log output of amdgpu-clocks service following the fresh boot.

spagootie commented 2 years ago

amdgpu-clocks.log

Here's the log, but it doesn't seem to describe any errors. Like I said, my hypothesis is that starting Wayland messes with the states somehow. I'll have to check if it works for me on Xorg.

EDIT: Actually, now that I look at the log, it only shows the memory states and not the clock states. I'm not sure if that's expected. The same thing happens when I restart the amdgpu-clocks service, but the program works anyway. here's my config for the card: amdgpu-custom-states.card0.txt

sibradzic commented 2 years ago

First of all, what is the card that you are trying to work with? Do you have multiple cards, or iGPU besides your main card? What about kernel, and amdgpu driver version?

Wayland / Sway should not make any difference, amdgpu-clocks script uses kernel sysfs API, DM is not even required for it to work properly. Have you perhaps been using any other AMD overclocking tools in parallel?

amdgpu-clocks.log

That is just a part of the log I meant. Please share output of

journalctl -u amdgpu-clocks.service -b

amdgpu-custom-states.card0.txt

Your custom state file is rather "complex". To troubleshoot, you should start with a simple single setting, say just a custom clock/voltage for state 7, and remove everything else. Oh, OD_RANGE is meaningless in custom state file(s), please make sure you had read the README.md in its entirety.

spagootie commented 2 years ago

I'm running an RX 580 8gb with linux 5.58.12.arch1-1 and mesa 22.1.3-1. I don't have an integrated GPU or other cards.

I made sure that I wasn't running any other programs like radeon-profile daemon, but now that I think about it I used to have the same exact problem with radeon-profile.

Here's the log: newlog.log

I also commented out every line in my custom state file except for the FORCE_SCLK and FORCE_PERF_LEVEL lines.

sibradzic commented 2 years ago

According to your log your custom state file is not specifying any changes to the SCLK or MCLK states. Can you try putting just this in the custom state file & paste the amdgpu-clocks service log in the comment:

FORCE_PERF_LEVEL: manual
OD_SCLK:
7:       1350MHz       1175mV

Following the log please share the output of cat /sys/class/drm/card0/device/pp_od_clk_voltage.

sibradzic commented 2 years ago

@spagootie ping?