Low FPS / Performance in Games (no performance issues with fresh OS)

Hello together,

I've bought a new GPU (RX 6700xt) recently and installed Garuda OS for the first time.
I was very happy until a few weeks ago the game performance in multiple games dropped heavily, and I couldn't understand why.

For example:

  • CS:GO: 30-60 FPS (low settings, full resolution)
  • Cyberpunk 2077: ~10 FPS (GPU is at 99%, CPU at 10-20%, ultra settings, full resolution)

These games were running very smooth before.
Before what? I don't know.
I've installed and tested a lot of software, made updates and changed settings since my last game session.

The other day, I found out that it's not the hardware that's causing the problems, since I was able to play at full performance again via a fresh Garuda booted from a USB stick. So it really seems to be the software.
I tried many things to fix it myself, due to the lack of knowledge / experience I may make it worse.

Funny thing: yesterday it worked magically - I had full performance in both games again.
Today it is back to the old.
I have not done much since yesterday.
Basically, I just made Backups via Vorta/Borg & Timeshift, did the updates via KDE Discover (offline updates) and mounted my NAS via etc/fstab.

What I tried so far:

  • searched for related topics
  • boot other kernels
  • updating UEFI & resetting / changing the config
  • different Wine / Proton versions
  • enabling "Disable CPU vulnerability mitigations" with "Garuda Boot Options" (seems not to be saved, other options like the kernel to boot are saved tho)
  • enabling performance mode via "CoreCtrl" for the GPU
  • setting performance profile via "cpupower"
  • disabling Compositing globally
  • closing unnecessary programms running in the background for testing (screenshot tool, opensnitch)
  • wiping ~/.wine & ~/.cache

garuda-inxi:

System:
Kernel: 6.4.11-zen2-1-zen arch: x86_64 bits: 64 compiler: gcc v: 13.2.1
clocksource: tsc available: hpet,acpi_pm
parameters: BOOT_IMAGE=/@/boot/vmlinuz-linux-zen
root=UUID=2ce349af-6b19-4133-ab62-561b95300acb rw rootflags=subvol=@
quiet quiet rd.udev.log_priority=3 vt.global_cursor_default=0 loglevel=3
ibt=off
Desktop: KDE Plasma v: 5.27.7 tk: Qt v: 5.15.10 wm: kwin_x11 vt: 2
dm: SDDM Distro: Garuda Linux base: Arch Linux
Machine:
Type: Desktop Mobo: Micro-Star model: X470 GAMING PRO CARBON (MS-7B78)
v: 1.0 serial: <superuser required> UEFI: American Megatrends LLC. v: 2.J1
date: 05/04/2023
CPU:
Info: model: AMD Ryzen 7 2700X bits: 64 type: MT MCP arch: Zen+ gen: 2
level: v3 note: check built: 2018-21 process: GF 12nm family: 0x17 (23)
model-id: 8 stepping: 2 microcode: 0x800820D
Topology: cpus: 1x cores: 8 tpc: 2 threads: 16 smt: enabled cache:
L1: 768 KiB desc: d-8x32 KiB; i-8x64 KiB L2: 4 MiB desc: 8x512 KiB
L3: 16 MiB desc: 2x8 MiB
Speed (MHz): avg: 4001 high: 4150 min/max: N/A cores: 1: 4150 2: 4150
3: 4150 4: 4150 5: 4150 6: 4150 7: 4022 8: 4150 9: 3334 10: 3327 11: 3538
12: 4150 13: 4150 14: 4150 15: 4150 16: 4150 bogomips: 132790
Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3 svm
Vulnerabilities: <filter>
Graphics:
Device-1: AMD Navi 22 [Radeon RX 6700/6700 XT/6750 XT / 6800M/6850M XT]
vendor: Sapphire driver: amdgpu v: kernel arch: RDNA-2 code: Navi-2x
process: TSMC n7 (7nm) built: 2020-22 pcie: gen: 4 speed: 16 GT/s
lanes: 16 ports: active: DP-3 empty: DP-1,DP-2,HDMI-A-1 bus-ID: 28:00.0
chip-ID: 1002:73df class-ID: 0300
Display: x11 server: X.Org v: 21.1.8 with: Xwayland v: 23.2.0
compositor: kwin_x11 driver: X: loaded: amdgpu unloaded: modesetting,radeon
alternate: fbdev,vesa dri: radeonsi gpu: amdgpu display-ID: :0 screens: 1
Screen-1: 0 s-res: 2560x1440 s-dpi: 96 s-size: 677x381mm (26.65x15.00")
s-diag: 777mm (30.58")
Monitor-1: DP-3 mapped: DisplayPort-2 model: HP OMEN 27q serial: <filter>
built: 2023 res: 2560x1440 dpi: 109 gamma: 1.2 size: 597x336mm (23.5x13.23")
diag: 685mm (27") ratio: 16:9 modes: max: 2560x1440 min: 720x400
API: OpenGL v: 4.6 Mesa 23.1.6 renderer: AMD Radeon RX 6700 XT (navi22
LLVM 15.0.7 DRM 3.52 6.4.11-zen2-1-zen) direct-render: Yes
Audio:
Device-1: Creative Labs EMU20k2 [Sound Blaster X-Fi Titanium Series]
driver: snd_ctxfi v: kernel pcie: gen: 1 speed: 2.5 GT/s lanes: 1
bus-ID: 24:00.0 chip-ID: 1102:000b class-ID: 0403
Device-2: AMD Navi 21/23 HDMI/DP Audio driver: snd_hda_intel v: kernel
pcie: gen: 4 speed: 16 GT/s lanes: 16 bus-ID: 28:00.1 chip-ID: 1002:ab28
class-ID: 0403
API: ALSA v: k6.4.11-zen2-1-zen status: kernel-api with: aoss
type: oss-emulator tools: N/A
Server-1: sndiod v: N/A status: off tools: aucat,midicat,sndioctl
Server-2: PipeWire v: 0.3.77 status: active with: 1: pipewire-pulse
status: active 2: wireplumber status: active 3: pipewire-alsa type: plugin
4: pw-jack type: plugin tools: pactl,pw-cat,pw-cli,wpctl
Network:
Device-1: Intel I211 Gigabit Network vendor: Micro-Star MSI driver: igb
v: kernel pcie: gen: 1 speed: 2.5 GT/s lanes: 1 port: f000 bus-ID: 22:00.0
chip-ID: 8086:1539 class-ID: 0200
IF: enp34s0 state: up speed: 1000 Mbps duplex: full mac: <filter>
Drives:
Local Storage: total: 7.28 TiB used: 5.79 TiB (79.5%)
SMART Message: Unable to run smartctl. Root privileges required.
ID-1: /dev/nvme0n1 maj-min: 259:0 vendor: Samsung model: SSD 980 PRO 2TB
size: 1.82 TiB block-size: physical: 512 B logical: 512 B speed: 63.2 Gb/s
lanes: 4 tech: SSD serial: <filter> fw-rev: 5B2QGXA7 temp: 50.9 C
scheme: GPT
ID-2: /dev/sda maj-min: 8:0 vendor: Samsung model: SSD 860 EVO 500GB
size: 465.76 GiB block-size: physical: 512 B logical: 512 B speed: 6.0 Gb/s
tech: SSD serial: <filter> fw-rev: 1B6Q scheme: MBR
ID-3: /dev/sdb maj-min: 8:16 vendor: HGST (Hitachi) model: HDN724040ALE640
size: 3.64 TiB block-size: physical: 4096 B logical: 512 B speed: 6.0 Gb/s
tech: HDD rpm: 7200 serial: <filter> fw-rev: A5E0 scheme: GPT
ID-4: /dev/sdc maj-min: 8:32 vendor: Samsung model: SSD 970 EVO 500GB
size: 465.76 GiB block-size: physical: 2048 B logical: 512 B type: USB
rev: 3.2 spd: 10 Gb/s lanes: 1 mode: 3.2 gen-2x1 tech: SSD
serial: <filter> fw-rev: 1.00 scheme: MBR
ID-5: /dev/sdd maj-min: 8:48 vendor: Samsung model: ST1000LM024 HN-M101MBB
size: 931.51 GiB block-size: physical: 4096 B logical: 512 B type: USB
rev: 2.1 spd: 480 Mb/s lanes: 1 mode: 2.0 tech: HDD rpm: 5400
serial: <filter> fw-rev: 3203 scheme: GPT
Partition:
ID-1: / raw-size: 1.82 TiB size: 1.82 TiB (100.00%) used: 1.77 TiB (97.4%)
fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:2
ID-2: /boot/efi raw-size: 300 MiB size: 299.4 MiB (99.80%)
used: 576 KiB (0.2%) fs: vfat dev: /dev/nvme0n1p1 maj-min: 259:1
ID-3: /home raw-size: 1.82 TiB size: 1.82 TiB (100.00%)
used: 1.77 TiB (97.4%) fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:2
ID-4: /var/log raw-size: 1.82 TiB size: 1.82 TiB (100.00%)
used: 1.77 TiB (97.4%) fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:2
ID-5: /var/tmp raw-size: 1.82 TiB size: 1.82 TiB (100.00%)
used: 1.77 TiB (97.4%) fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:2
Swap:
Kernel: swappiness: 133 (default 60) cache-pressure: 100 (default) zswap: no
ID-1: swap-1 type: zram size: 31.27 GiB used: 532.8 MiB (1.7%)
priority: 100 comp: zstd avail: lzo,lzo-rle,lz4,lz4hc,842 max-streams: 16
dev: /dev/zram0
Sensors:
System Temperatures: cpu: 57.6 C mobo: N/A gpu: amdgpu temp: 46.0 C
mem: 50.0 C
Fan Speeds (rpm): N/A gpu: amdgpu fan: 0
Info:
Processes: 434 Uptime: 22m wakeups: 0 Memory: total: 32 GiB
available: 31.27 GiB used: 6.73 GiB (21.5%) Init: systemd v: 254
default: graphical tool: systemctl Compilers: gcc: 13.2.1 clang: 15.0.7
Packages: 2490 pm: pacman pkgs: 2468 libs: 608 tools: octopi,pamac,paru
pm: flatpak pkgs: 22 Shell: fish v: 3.6.1 default: Bash v: 5.1.16
running-in: konsole inxi: 3.3.29
Garuda (2.6.16-1):
System install date:     2023-08-01
Last full system update: 2023-08-23
Is partially upgraded:   No
Relevant software:       timeshift NetworkManager dracut
Windows dual boot:       No/Undetected
Failed units:

pacman -Q:

output @ privatebin

journalctl -b:

output @ privatebin

This is not a bug. It's best practice if you reinstall your os after a hardware change. Watch this video to learn more

I did. I've installed Garuda after installing the new GPU. :v:
My old system was Manjaro.

I’m actually not sure about this, but there must be some kind of directory where generated files are stored? Like wine prefixes. Sometimes deleting ~/.wine helps with issues, so it might here as well?

offtopic

What is your username referring to btw?

2 Likes

Good idea, but I don’t think it will fix that one problem, because CS:GO doesn’t use Wine/Proton.
Unless it is one problem - which I assume - and not several. Of course, I will try it anyway.

Edit: I’ll try wiping ~/.cache too.
Edit2: Unfortunately, neither of these changed anything.

offtopic

What is your username referring to btw?

It’s nothing special - just the name of my PC (LinuxGamingMachine). :grin:

What kernels did you try? Be sure to try something that is not on 6.4. Generally we suggest trying the LTS kernel, which is well-supported and runs the 6.1 version.

Another thing that might be worth a shot since you have a very new GPU would be to switch to the upstream experimental build of mesa.

https://wiki.archlinux.org/title/AMDGPU#Experimental

If it does not help I would suggest switching back because there is always the possibility the bleeding edge stuff can introduce new bugs.

5 Likes

Hey, good news! Your idea to boot a 6.1 kernel seems to be the solution!
The performance is not as good as before the issue, but way better than with the issue (6.4 kernel?).

CS:GO: 100-250 FPS and Cyberpunk 2077 40-50 FPS

I'll experiment with other kernels later and try the experimental build of Mesa too.
I will report back if I can achieve relevant improvements so that others affected can learn from it.

Thank you all for your input!

2 Likes

Ok, here is an update:

I've tested more kernels (6.1-4.x + the experimental 6.5 rc) and installed mesa-tkg-git (mesa-git would not build because the source seems to be down [504 @ gitlab.freedesktop.org]).

Unfortunately, I have not been able to make any improvements.
In fact, the kernels based on version 6.1.x are the only ones that don't have the bug and make many games playable at all.

I hope that this bug is known to the developers and is not a very specific, non-reproducible one.
I wouldn't know how to reproduce or isolate it, anyway. :face_with_diagonal_mouth:

Hello again, last update:

the bug has to do with the monitor refresh rate.
When I set the refresh rate below the max. rate of 165 Hz, I can play even with the newest kernel without performance losses.

I will edit the first post to mention this workaround and change the topic.
Edit: Never mind, I can't edit the first post anymore.

Related issue reports:
https://gitlab.freedesktop.org/drm/amd/-/issues/2611
https://gitlab.freedesktop.org/drm/amd/-/issues/2657

Since "gitlab.freedesktop.org" is still down, links from the web archive:
Severely reduced performance when selecting 1440p 165Hz vs. 144Hz since at least linux 6.4-rc5, as VRAM clock stays low under load (#2611) · Issues · drm / amd · GitLab
6.4 kernel mclk stuck at lowest on rx 6900 xt (#2657) · Issues · drm / amd · GitLab

1 Like

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.