How to change CPU scaling governor

I’m using Bazzite (Desktop version) on my PC with AMD Ryzen CPU. I see that default scaling governor is set to powersave:

$ cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
powersave

There is additionally performance governor available, but nothing more:

$ cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_governors
performance powersave

I tried to change /etc/tuned/ppd.conf file like here (commented-out lines are these that I have actually changed):

[main]
# The default PPD profile
#default=balanced
#battery_detection=true
default=performance
battery_detection=false

[profiles]
# PPD = TuneD
power-saver=powersave
balanced=balanced-bazzite
performance=throughput-performance-bazzite

[battery]
# PPD = TuneD
balanced=balanced-battery-bazzite

and restarting, but that didn’t do anything, at least to /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor - it’s still on powersave.
My PC is hooked up to a UPS, so just to be sure, I disabled battery detection there to prevent any performance limits that could be applied by tuned.

How to change default scaling governor? For example, Is it possible to have the ondemand governor with current Bazzite image?

Just rpm-ostree kargs --append "cpufreq.default_governor=ondemand" no?

This didn’t solve it for me - after reboot, the governor is still powersave

What does cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors return? If it doesn’t list ondemand then the cpufreq_ondemand module isn’t loaded for some reason. If that’s the case, you should probably file a bug in main

https://wiki.archlinux.org/title/CPU_frequency_scaling#Autonomous_frequency_scaling

The most important feature of active governing is that only two governors appear available, powersave and performance. They do not work at all like their normal counterpart, however: these levels are translated into an Energy Performance Preference hint for the CPU’s internal governor. As a result, they both provide dynamic scaling, similar to the schedutil or ondemand generic governors respectively, differing mostly in latency.

So my guess is that you either change entirely the scaling driver, the operating mode of amd_pstate, or ideally leave it as it is, since in that default mode it already operates in a similar way to vintage ondemand or schedutil already.

kuba@bazzite:~$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
performance powersave

Done ondemand governor not available · Issue #1169 · ublue-os/main · GitHub

Maybe try using tlp and tlp-ui

I am running a AMD Ryzen HX 370 machine and the default governor is also powersave. The Meta B shortkey does show other settings, but it always ends up in powersave.

I set up a custom system service to change to performance mode at boot as a workaround.

Is everybody affected or is this a special case?

CPU/GPU stuck in “powersave” after sleep on desktop build

Just wanted to share a quick fix for a sleep/resume issue I ran into on my fanless PC Ryzen AI 9 HX 370.

The Problem: I set up a custom systemd script to lock my CPU governor to performance and my GPU to high to maximize desktop performance. It worked perfectly on boot, but every time the system woke up from sleep/suspend, it immediately reverted back to powersave and auto.

The Culprit: The hhd.service (Handheld Daemon). Since Bazzite is heavily optimized for handhelds, HHD wakes up after sleep and applies its default battery-saving profiles, completely overwriting any custom kernel tweaks.

The Fix: If you are running Bazzite on a stationary Desktop, Mini-PC, or HTPC and don’t need the handheld controller/TDP emulation features, you can simply mask the Handheld Daemon:

Bash

sudo systemctl mask hhd.service

After doing this, you can put your custom resume scripts inside /etc/systemd/system-sleep/. They will execute perfectly after waking up without HHD interfering, and your system will stay locked to your preferred performance levels!

Hope this saves some time for anyone else building a stationary Bazzite rig!

And by the way bazzite is awesome, thanks for the great OS.

P.S. I think probably hhd.service should be able to switch modes correctly, perhaps this just does not work on the HX 370 as intended.