26.04 cpupower-gui broken? cannot set default CPU scaling governor "performance" at boot time

I have a plain installation (no PPAs) of Ubuntustudio 26.04 and it is not possible to change the default CPU frequency scaling governor from “powersave” to “performance” at boot.
Are there any alternatives / workarounds for this problem?
It is possible to change the governor with cpupower-gui manually with the userspace program but it is not possible to use the “load profile at boot” option.
Looking at the errors it looks as if a service wants to connect to the display - very bad for a background service…
There seems to be a bug in cpupower-gui that crashes the services responsible for setting the governor at boot:

Aug 30 09:30:23 Alcyone cpupower-gui[1653]: Handy.init()
Aug 30 09:30:23 Alcyone cpupower-gui[1653]: /usr/share/cpupower-gui/cpupower_gui/window.py:127: Warning: g_object_get: assertion 'G_IS_OBJECT>
Aug 30 09:30:23 Alcyone cpupower-gui[1653]: Handy.init()
Aug 30 09:30:23 Alcyone cpupower-gui[1653]: gtk_style_context_add_provider_for_screen: assertion ‘GDK_IS_SCREEN (screen)’ failed
Aug 30 09:30:23 Alcyone cpupower-gui[1653]: gtk_icon_theme_get_for_screen: assertion ‘GDK_IS_SCREEN (screen)’ failed
Aug 30 09:30:23 Alcyone cpupower-gui[1653]: gtk_icon_theme_add_resource_path: assertion ‘GTK_IS_ICON_THEME (icon_theme)’ failed
Aug 30 09:30:23 Alcyone cpupower-gui[1653]: cannot open display:
Aug 30 09:30:23 Alcyone systemd[1]: cpupower-gui.service: Main process exited, code=exited, status=1/FAILURE
Aug 30 09:30:23 Alcyone systemd[1]: cpupower-gui.service: Failed with result ‘exit-code’.
Aug 30 09:30:23 Alcyone systemd[1]: Failed to start cpupower-gui.service - Apply cpupower-gui config at boot.

A similar bug has been reported on GitHub: service not starting · Issue #148 · vagnum08/cpupower-gui · GitHub

1 Like

Moved to Support and Help.

The Flavors & Remixes sections are for discussions rather than technical support.

Welcome to Ubuntu Discourse :slight_smile:

1 Like

Do me a favor and report a bug by opening a terminal and typing ubuntu-bug cpupower-gui and filling out all appropriate fields. This certainly feels like a bug, especially considering there’s an upstream Github issue.

I filed the bug report. Can you return me a favor and help me with my original question?
I need a solution / workaround for this as it is very inconvenient to always have to set this manually.

Create a systemd unit /etc/systemd/system/cpu-performance.service

[Unit]
Description=Set CPU governor to performance on startup
After=multi-user.target

[Service]
Type=oneshot
ExecStart=/bin/sh -c 'echo performance > /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor'

[Install]
WantedBy=multi-user.target

and activate it.

sudo systemctl daemon-reload
sudo systemctl enable cpu-performance.service
sudo systemctl start cpu-performance.service

I’ll do you one better and work on fixing the bug.

3 Likes

Update to the above: the bug you filed ended up being a duplicate, which is fine because that shows us the original bug was simply being experienced by more than one person. I’m sad that I didn’t catch this when the initial report was made in May, so I’ve subscribed the Ubuntu Studio Bugs team to the package for future bugs as it hadn’t been previously.

That said, the package will be landing in Stonking Stingray first, but I already uploaded a backport of the fix to 26.04’s resolute-proposed pocket. Now we just need to wait for the SRU team to accept it, after which it will need testing for validation. The package must be in the -proposed pocket for 7 days before being released to resolute-updates, so these things can take more than a week to hit the stable release.

2 Likes

Thanks for the suggestion. Unfortunately it did not work. Here is the unit that I created in the end and that works but only when I start it manually with sudo systemctl start…. The odd thing is that after reboot the governor is still “powersave” although systemctl status cpu-performance service shows that it ran.
There must be something else that is always resetting the CPU governor. I have disabled the broken cpupower-gui services but that did not help.

[Unit]
Description=Set CPU governor to performance on startup
After=multi-user.target

[Service]
Type=oneshot
ExecStart=cpupower frequency-set -g performance

[Install]
WantedBy=multi-user.target

@mark-dammer,

The fix was just accepted into resolute-proposed. Please help us out by testing it following the instructions in this comment: Comment #6 : Bug #2151790 : Bugs : cpupower-gui package : Ubuntu

2 Likes

I have been away for a couple of days but tested the proposed version this morning:
The good news: The services are starting now without any crash.
The bad news: The system is still not setting “performance” as governor.
My question: Is there any component in Ubuntu Studio 26.04 that could simply override any attempt to set the governor ?
Here are the latest service statuses:

markd@Alcyone:~$ sudo systemctl status cpupower-gui
[sudo: authenticate] Password:
○ cpupower-gui.service - Apply cpupower-gui config at boot
Loaded: loaded (/usr/lib/systemd/system/cpupower-gui.service; enabled; preset: enabled)
Active: inactive (dead) since Sun 2026-09-06 11:18:57 BST; 41s ago
Invocation: add21700317d4d85a35fd274fc5d8934
Docs: GitHub - vagnum08/cpupower-gui: cpupower-gui is a graphical program that is used to change the scaling frequency limits of the cpu, similar to cpupower. · GitHub
man:cpupower-gui(1)
Process: 1659 ExecStart=/usr/bin/cpupower-gui config -a (code=exited, status=0/SUCCESS)
Main PID: 1659 (code=exited, status=0/SUCCESS)
Mem peak: 20.1M
CPU: 241ms

Sep 06 11:18:57 Alcyone cpupower-gui[1659]: Minimum Frequency: 800.0 MHz, Maximum Frequency: 3500.0 MHz
Sep 06 11:18:57 Alcyone cpupower-gui[1659]: Governor: Powersave, Online: True
Sep 06 11:18:57 Alcyone cpupower-gui[1659]: Setting CPU: 6
Sep 06 11:18:57 Alcyone cpupower-gui[1659]: Minimum Frequency: 800.0 MHz, Maximum Frequency: 3500.0 MHz
Sep 06 11:18:57 Alcyone cpupower-gui[1659]: Governor: Powersave, Online: True
Sep 06 11:18:57 Alcyone cpupower-gui[1659]: Setting CPU: 7
Sep 06 11:18:57 Alcyone cpupower-gui[1659]: Minimum Frequency: 800.0 MHz, Maximum Frequency: 3500.0 MHz
Sep 06 11:18:57 Alcyone cpupower-gui[1659]: Governor: Powersave, Online: True
Sep 06 11:18:57 Alcyone systemd[1]: cpupower-gui.service: Deactivated successfully.
Sep 06 11:18:57 Alcyone systemd[1]: Finished cpupower-gui.service - Apply cpupower-gui config at boot.
markd@Alcyone:~$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
powersave
markd@Alcyone:~$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
powersave
markd@Alcyone:~$ sudo systemctl status cpupower-gui
cpupower-gui-helper.service cpupower-gui.service
markd@Alcyone:~$ sudo systemctl status cpupower-gui-helper.service
● cpupower-gui-helper.service - cpupower-gui system helper
Loaded: loaded (/usr/lib/systemd/system/cpupower-gui-helper.service; enabled; preset: enabled)
Active: active (running) since Sun 2026-09-06 11:18:57 BST; 1min 41s ago
Invocation: d545745897ca4a66b0f4df91280556d4
Docs: GitHub - vagnum08/cpupower-gui: cpupower-gui is a graphical program that is used to change the scaling frequency limits of the cpu, similar to cpupower. · GitHub
Main PID: 1953 (cpupower-gui-he)
Tasks: 1 (limit: 17046)
Memory: 13.9M (peak: 14.4M)
CPU: 195ms
CGroup: /system.slice/cpupower-gui-helper.service
└─1953 /usr/bin/python3 /usr/lib/x86_64-linux-gnu/cpupower-gui/cpupower-gui-helper

Sep 06 11:18:57 Alcyone systemd[1]: Starting cpupower-gui-helper.service - cpupower-gui system helper…
Sep 06 11:18:57 Alcyone systemd[1]: Started cpupower-gui-helper.service - cpupower-gui system helper.
markd@Alcyone:~$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
powersave

Erich’s patch works, but nobody is overriding your CPU - cpupower-gui is setting powersave itself:

cpupower-gui[1659]: Governor: Powersave

It blindly loads /etc/cpupower_gui.conf. Since you haven’t saved “performance” as default in the GUI yet, it dutifully applies factory powersave on boot.

Two ways to fix this:

The easiest way:

run:

powerprofilesctl set performance

Ubuntu’s built-in power daemon will permanently lock your CPU to performance across reboots.

Or if you want to stick with cpupower-gui:

Open cpupower-gui, set it to performance, and click Save as default profile

or set governor = performance in /etc/cpupower_gui.conf

What scaling driver is used?

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_driver

it says intel_pstate

With intel_pstate, only two governors exist: powersave and performance.

Run:

powerprofilesctl set performance

and check scaling_governor again. It will switch to performance right away!

What desktop environment are you using (GNOME, KDE, …)?

It’s Ubuntu Studio, so it’s KDe.

Does it have any options to configure CPU performance? GNOME has it right in the system settings.

It sounds like something overrides whatever was set at boot later. Have you verified that the scaling governor is set after the service in question completes? Try adding ExecStartPost which prints the current governor. Or add a service to do the same after your service and before systemd-user-sessions.service - does it show the correct governor?

This is definitely the case.
systemctl status cpupower-gui shows “Governor: Performance, Online: True” for every core but the governor is still “powersave” at boot.
Restarting the service with “sudo systemctl restart cpupower-gui” after login will set the “performance” governor.

And I notice that cpupower-gui has a user service “cpupower-gui-user” that does not work at all. It simply calls “cpupower-gui config”. It is meant to set the governor at login but crashes with:
(cpupower-gui:4859): GLib-GIO-CRITICAL **: 15:39:28.481: This application can not open files.

I tried using “cpupower-gui config -a” but that results in “unable to authenticate” errors in the user service.

Now the trick is to find out who is meddling with the CPU scaling-governor. I already gave disabling the power-profile-daemon a try but that is not the problem.

I’m assuming you made a change here:

That has to be run as root (sudo).

Quick edit: Now that I have had a chance to check for myself, I’m noticing the same issues. However, it doesn’t appear as though anything else is overriding it (there’s nothing by default in Ubuntu Studio), just that it’s not reading the config for some reason. I have more investigating to do, but although upstream has done quite a bit of development since their last release, they haven’t actuallly done a realease. :person_facepalming: This means a lot of bugs that have popped-up unnoticed in the years haven’t been fixed. I’m doing more evaluation.

Edit 2: Upon examining the source code there appears to be two systemd .service files and they both need to be patched the same way. The good news is the main one passes. The bad news is the fix is only half-way done. I’ll take the appropriate measures on the bug.

Edit 3: Fix is uploaded awaiting approval. Again. sigh

1 Like

Hi @mark-dammer,

The bug is up for testing again. LP: # 2151790

Thanks for your help!

1 Like