Trying a few games in Linux, I noticed that I’d get really bad performance occasionally. It turned out to be because the GPU would be starved for power. I think there might be a problem with /sys/firmware/acpi/platform_profile
after a suspend / resume. Since this is what power-profiles-daemon writes to on this processor, it means that PPD changes seemingly have no effect after that.
You can see this most easily running ryzenadj -i
in a watch
, but it’s also obvious with glxgears
and mangohud
(and easier to set up on a livecd):
- run
MANGOHUD_CONFIG=gpu_core_clock,gpu_power,cpu_mhz,cpu_power vblank_mode=0 mangohud glxgears
- On the balanced profile, should see a sum of GPU / CPU power of around 25-35W
- Switch PPD to power save, watch the sum go down to 6-15W
- While PPD is in power save, suspend the machine, wait a few seconds, resume
- Wait a few seconds for it to finish boosting, and the sum to settle back down to 6-15W
- Change PPD back to balanced or performance
- Notice that the GPU / CPU power stays extremely low
I’m not sure this happens 100% of the time, but it’s been pretty consistent for me. I tried to rule out anything I did by trying a Fedora 39 livecd, and it reproduced there too.
With ryzenadj
, you can see that the TDP limits normally change when PPD changes the profile, but after a suspend they get stuck at whatever they were when the machine was suspended – PPD changes won’t adjust them anymore.
This isn’t a PPD problem directly, you can reproduce the same thing by writing directly to /sys/firmware/acpi/platform_profile
. It clears itself up after a reboot, but I haven’t found a way to fix it without rebooting.
Has anyone else seen this? Something I’m missing?