50% CPU Performance Regression on Ryzen from Linux Kernel 5.9 to 5.10

I read that Linux 5.10.8 fixed the btrfs performance regression, so I wanted to try to switch back to it.
For context, I compiled linux59-tkg-pds and was using that as a my active kernel.

After switching to linux-tkg-pds(5.10.10) from the Chaotic-AUR, I noticed that the Lattedock panels took forever to load and the system seemed to overall be significantly less responsive.
I tried compiling my own version of linux510-tkg-pds, but the issue persisted.
I also tried the linux-zen kernel, but I still had the issue.

I have an Samsung 970 EVO nvme SSD, so I don't think the storage was the problem.
To further confirm the issue was CPU based, I conducted Geekbench benchmarks on each kernel version.

Linux59-tkg-pds: Gigabyte Technology Co., Ltd. AB350-Gaming 3 - Geekbench Browser
Linux510-tkg-pds: Gigabyte Technology Co., Ltd. AB350-Gaming 3 - Geekbench Browser
Linux-zen (5.10): Gigabyte Technology Co., Ltd. AB350-Gaming 3 - Geekbench Browser

On linux 5.9, I got a single core score of 893 and multi-core of 5673
On linux 5.10, I got a single core score of 443 and multi-core of 2899
Something, somewhere, is causing a 50% performance regression.

It could be external to the kernel, I did see a baloosearch process in ksysguard taking up 8% of cpu that I don't see on linux kernel 5.9. That could be a red herring though.
As far as I know, my system configuration remains pretty consistent with stock Garuda KDE Dr460nized. The install is about 2 months old, however(with daily updating).

I'm wondering if this prevalent on Ryzen cpus and if anyone has any advice. If anyone can think of any system reports/diagnostics I can conduct to help, please let me know! This may even be a non-Garuda specific issue and if so, I'm just look for confirmation (can't find anything about it anywhere.)

Thanks for your time,
ThePoorPilot
NC, USA

True :slight_smile: , or better right.

and

:slight_smile:

like always, post your

inxi -Fxxxza

as text.

Maybe helpful

1 Like

You could test disabling, or masking the auto-cpufreq service as a troubleshooting step.

Disable the auto-cpufreq.service (no reboot required):

systemctl disable --now auto-cpufreq.service && systemctl daemon-reload

See the Archwiki if you wish to find further information regarding enabling, disabling, or masking systemd services:

https://wiki.archlinux.org/index.php/systemd

3 Likes

Thanks for the suggestions.
I'll give them a shot in my free time tomorrow and I'll provide the diagnostics when booted on kernel 5.10

For now, I've got to finish my school work and head to bed.

1 Like

Oddly enough, disabling auto-cpufreq as you said seems to have done the trick.
I ran another geekbench test and I got even better results than on kernel 5.9.
https://browser.geekbench.com/v5/cpu/6185170

It seems odd that auto-cpufreq would work decently on 5.9, but not 5.10.
From what I'm reading, auto-cpufreq is designed more for laptops.
I'm running Garuda on a desktop, I have 1300w psu, and I have a Noctua NH-U12s.
As such, I don't have any power or thermal limits.

Is there any benefit to using auto-cpufreq on my machine, or should I just leave it disabled and not try to fix it?

Thanks,
ThePoorPilot

Can you give us output of

cat /sys/class/power_supply/AC0/online
2 Likes

Sure!
Booted into Linux 5.10, I get

cat: /sys/class/power_supply/AC0/online: No such file or directory

Which could be a problem, or maybe I'm typing it in wrong(tried running with sudo as well)

1 Like

Try this

cat /sys/class/power_supply/A*/online
3 Likes

Still the same unfortunately:
fish: No matches for wildcard “/sys/class/power_supply/A*/online”. See help expand.
cat /sys/class/power_supply/A*/online

I went and looked in Dolphin and /sys/class/power_supply is empty.
I do recall reinstalling powerdevil at some point, maybe I need to reinstall again after doing some shenanigans with Grub and restoring system snapshots

Let me know if you have any ideas?

2 Likes

ls /sys/class/power_supply/

3 Likes

As I saw in Dolphin, the command returns nothing

╰─λ ls /sys/class/power_supply/
╭─
╰─λ

What about in kernel 5.9

Can you try booting in it

2 Likes

Let me reboot and check

ls command still returns nothing, and there is nothing in the directory in dolphin either. Maybe my install is a little different from stock by now, that's how it always goes.
Don't know if this is helpful, or just a dead end.

edit: cat commands in kernel 5.9 also show nothing.

However, I did do some overclocking on the past on 5.9, so maybe it already was ignoring auto-cpufreq

1 Like

It is helpful
So it means the auto-cpufreq needs fixing
For this condition where powersupply doesnt exist

5 Likes

Should I try a reinstall of auto-cpufreq?

What do you suggest to fix it?

I tried reinstalling and restarting the auto-cpufreq.service, and there is still nothing in the cat or ls command.
I tried to remove it, but it would have required me to also remove performance-tweaks which kind of spooked me.
As far as I know, there's not really a good way to do a clean reinstall of a package on arch.

Also, for your records, I am using auto-cpufreq-git.

Once again, thanks for the help. I didn't anticipate getting much help, let alone help from three of the main developers of Garuda within only a day.

If no solution arises, I think I am pretty content with the system running without auto-cpufreq. It still seems to work pretty well. I'll just know that I'll need to do a reinstall of the os at some point in the future(there are so many things I've broken and had to fix over the past few months, all part of learning!)

1 Like

Update:
I booted into a live usb of garuda to check and I saw the same results(nothing) with cat /sys/class/power_supply/A*/online and ls /sys/class/power_supply/.

I read up on the issue on arch forums. Some other people reported that on desktops there was nothing in the /sys/class/power_supply folder. The closest I got to figuring it out was someone talking about acpi kernel modules.

I made some changes to my BIOS to use Hackintosh at some point, so perhaps that is interfering.
It could also be possible that there is no hardware support for what I am using (Gigabyte GA-AB350-Gaming 3 MOBO and EVGA 1300 G2 power supply).

From what I can tell, the root of the issue is that auto-cpufreq needs power information to optimize itself, and my PC isn't giving it.

1 Like

I guess you already know you have one of Gigabyte's mobo's with bad USB and other issues in Linux.

2 Likes

I actually don't have usb 3 issue or audio issues at all.

Also, that reddit post cites the motherboard as my model, but he is using a fx-8350, which as far as I know is completely incompatible.

The fx-8350 is an am3 cpu, while the ryzen 5 1600 is an am4 socket cpu. My theory is that the poster has a motherboard that looks like the newer am4 model, but uses the older chipset, and they just Googled amd motherboards and looked for the one that looks the closest to theirs.

I could try resetting the bios to default settings, I know hackintosh required some modified power settings.

Worst case, I still don't know if auto-cpufreq is important on a machine without thermal or power limits. On my desktop, I definitely favor performance over power-effeciency.

Actually its a bug in auto-cpufreq

What we need to do is fix it
So it will set performance
Instead of powersave
It is setting powersave currently due to not being able to detect power supply properly.

6 Likes