Poor in-game FPS

Hey there,
I've been having FPS issues in video games for a while using Garuda (Dragonized KDE). I've looked into, what I believe, is pretty much every possible cause, but haven't found a solution for my problem.
I'll summarize my setup and the findings of various troubleshooting attempts and then go further into what problem I'm experiencing:
i7 8700k
RTX4090
Kernel: 6.4.4-zen1-1-zen
using nvidia-dkms package
lspci says "nvidia" module is loaded
X11 server is using "nvidia"
nvidia-smi is saying I'm using nvidia driver version 535.86.05
I've set my CPU governor to performance using corectrl
KDE compositing is disabled on startup
Two screens plugged into the ports of the GPU

Now, the problem I'm having is that in-game performance is very poor relative to the hardware I'm using. I get about 70-100 fps, even in easy-to-run games. My guess is that some package I'm installing is to blame here. When I install garuda from scratch and only set up the nvidia-dkms driver, I get the performance I would expect.

I don't know how relevant this is, but I remember installing a lot of additional lib32 proton/wine packages shortly before this problem occurs. I had to install these for compatibility with some games, if I recall correctly.

Changing in-game settings barely affects fps: The difference between running "Sons of the Forest" at low preset vs Ultra preset is about 20 fps, still maxing out at about 100 at low settings.
Given the fact that I've seen my system perform properly on garuda (and the same being true when using windows on the same machine), I doubt a CPU bottleneck is to blame here.
I've tried troubleshooting this with ChatGPT, but it also haven't given me much more insight. The points it suggested were:
Update your system and drivers - These are up to date
Configure NVIDIA Settings - Not sure what exactly I'm supposed to do here, but I did have nvidia-settings write my xorg config
Check for CPU bottleneck - Unlikely to be the cause, as I described
Check your game settings - Also tested many games and various combinations of settings
Disable compositing in your desktop environment - Done that
Use GameMode - Tried gamemode explicitly, but should be mostly obsolete due to me running my CPU on performance mode
Try Different Proton/Wine versions - Also no difference here

I'm grateful for any pair of eyes showing me something I might be missing.
(Also, obligatory thanks to the garuda team for making using arch a breeze, the vast majority of the time, anyway ;))

garuda-inxi: https://pastebin.com/dtECy1YM

:smiley:
Change it :slight_smile:

BTW, This page is no longer available. It has either expired, been removed by its creator, or removed by one of the Pastebin staff.

You can post the garuda-inxi here.

1 Like

Here is my link for installing all the lib32's the proper way, just in case.

Have you used 'sudo nvidia-settings' to set a proper xorg.conf file? (reboot afterwards)

2 Likes

I thought as much :smiley:
Do you know how I can pinpoint the package that might cause this?
If, as I'm guessing, some lib32 vulkan or proton package is to blame here, how do I best find it?

System:

Kernel: 6.4.4-zen1-1-zen arch: x86_64 bits: 64 compiler: gcc v: 13.1.1

parameters: BOOT_IMAGE=/@/boot/vmlinuz-linux-zen

root=UUID=7f5870c2-e0ba-4438-8f54-cd0d1275c238 rw rootflags=subvol=@

quiet quiet rd.udev.log_priority=3 vt.global_cursor_default=0

resume=UUID=aff65728-1f1b-47c3-a2d3-17f175a578cd loglevel=3 ibt=off

Desktop: KDE Plasma v: 5.27.6 tk: Qt v: 5.15.10 wm: kwin_x11 vt: 2

dm: SDDM Distro: Garuda Linux base: Arch Linux

Machine:

Type: Desktop Mobo: Gigabyte model: Z370 AORUS Gaming 7 v: x.x

serial: <superuser required> UEFI: American Megatrends v: F4

date: 10/30/2017

CPU:

Info: model: Intel Core i7-8700K bits: 64 type: MT MCP arch: Coffee Lake

gen: core 8 level: v3 note: check built: 2018 process: Intel 14nm family: 6

model-id: 0x9E (158) stepping: 0xA (10) microcode: 0xF2

Topology: cpus: 1x cores: 6 tpc: 2 threads: 12 smt: enabled cache:

L1: 384 KiB desc: d-6x32 KiB; i-6x32 KiB L2: 1.5 MiB desc: 6x256 KiB

L3: 12 MiB desc: 1x12 MiB

Speed (MHz): avg: 2675 high: 3700 min/max: 800/4700 scaling:

driver: intel_pstate governor: powersave cores: 1: 2300 2: 2300 3: 2300

4: 2300 5: 3700 6: 3700 7: 2602 8: 2300 9: 2300 10: 3700 11: 2301 12: 2300

bogomips: 88796

Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx

Vulnerabilities: <filter>

Graphics:

Device-1: NVIDIA AD102 [GeForce RTX 4090] vendor: Gigabyte driver: nvidia

v: 535.86.05 alternate: nouveau,nvidia_drm non-free: 535.xx+

status: current (as of 2023-07) arch: Lovelace code: AD1xx

process: TSMC n4 (5nm) built: 2022-23+ pcie: gen: 3 speed: 8 GT/s

lanes: 16 link-max: gen: 4 speed: 16 GT/s bus-ID: 01:00.0

chip-ID: 10de:2684 class-ID: 0300

Display: x11 server: X.Org v: 21.1.8 with: Xwayland v: 23.1.2

compositor: kwin_x11 driver: X: loaded: nvidia unloaded: modesetting

alternate: fbdev,nouveau,nv,vesa gpu: nvidia display-ID: :0 screens: 1

Screen-1: 0 s-res: 3840x2160 s-dpi: 80 s-size: 1219x686mm (47.99x27.01")

s-diag: 1399mm (55.07")

Monitor-1: DP-2 pos: top-right res: 2560x1080 dpi: 81

size: 798x334mm (31.42x13.15") diag: 865mm (34.06") modes: N/A

Monitor-2: DP-4 pos: primary,bottom-l res: 3840x1080 hz: 144 dpi: 82

size: 1196x336mm (47.09x13.23") diag: 1242mm (48.91") modes: N/A

API: OpenGL v: 4.6.0 NVIDIA 535.86.05 renderer: NVIDIA GeForce RTX

4090/PCIe/SSE2 direct-render: Yes

Audio:

Device-1: Intel 200 Series PCH HD Audio vendor: Gigabyte

driver: snd_hda_intel v: kernel alternate: snd_soc_avs bus-ID: 00:1f.3

chip-ID: 8086:a2f0 class-ID: 0403

Device-2: NVIDIA AD102 High Definition Audio vendor: Gigabyte

driver: snd_hda_intel v: kernel pcie: gen: 3 speed: 8 GT/s lanes: 16

link-max: gen: 4 speed: 16 GT/s bus-ID: 01:00.1 chip-ID: 10de:22ba

class-ID: 0403

Device-3: RODE Microphones RODECaster Pro

driver: hid-generic,snd-usb-audio,usbhid type: USB rev: 2.0 speed: 480 Mb/s

lanes: 1 mode: 2.0 bus-ID: 1-5.3:6 chip-ID: 19f7:0011 class-ID: 0102

serial: <filter>

API: ALSA v: k6.4.4-zen1-1-zen status: kernel-api tools: N/A

Server-1: PipeWire v: 0.3.76 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 Ethernet I219-V vendor: Gigabyte driver: e1000e v: kernel

port: N/A bus-ID: 00:1f.6 chip-ID: 8086:15b8 class-ID: 0200

IF: enp0s31f6 state: up speed: 1000 Mbps duplex: full mac: <filter>

Device-2: Qualcomm Atheros Killer E2500 Gigabit Ethernet vendor: Gigabyte

driver: alx v: kernel pcie: gen: 1 speed: 2.5 GT/s lanes: 1 port: d000

bus-ID: 07:00.0 chip-ID: 1969:e0b1 class-ID: 0200

IF: enp7s0 state: down mac: <filter>

Drives:

Local Storage: total: 5.82 TiB used: 699.05 GiB (11.7%)

SMART Message: Unable to run smartctl. Root privileges required.

ID-1: /dev/nvme0n1 maj-min: 259:0 vendor: Samsung model: SSD 970 EVO 1TB

size: 931.51 GiB block-size: physical: 512 B logical: 512 B speed: 31.6 Gb/s

lanes: 4 tech: SSD serial: <filter> fw-rev: 2B2QEXE7 temp: 35.9 C

scheme: GPT

ID-2: /dev/sda maj-min: 8:0 vendor: Samsung model: SSD 850 EVO 250GB

size: 232.89 GiB block-size: physical: 512 B logical: 512 B speed: 6.0 Gb/s

tech: SSD serial: <filter> fw-rev: 2B6Q scheme: GPT

ID-3: /dev/sdb maj-min: 8:16 vendor: Samsung model: SSD 870 EVO 1TB

size: 931.51 GiB block-size: physical: 512 B logical: 512 B speed: 6.0 Gb/s

tech: SSD serial: <filter> fw-rev: 1B6Q scheme: MBR

ID-4: /dev/sdc maj-min: 8:32 vendor: Western Digital

model: WD40EFRX-68N32N0 size: 3.64 TiB block-size: physical: 4096 B

logical: 512 B type: USB rev: 3.0 spd: 5 Gb/s lanes: 1 mode: 3.2 gen-1x1

tech: HDD rpm: 5400 serial: <filter> scheme: GPT

ID-5: /dev/sdd maj-min: 8:48 vendor: Samsung model: Type-C

size: 119.51 GiB block-size: physical: 512 B logical: 512 B type: USB

rev: 3.1 spd: 5 Gb/s lanes: 1 mode: 3.2 gen-1x1 tech: N/A serial: <filter>

fw-rev: 1100 scheme: GPT

SMART Message: Unknown USB bridge. Flash drive/Unsupported enclosure?

ID-6: /dev/sde maj-min: 8:64 vendor: SanDisk model: USB 3.2Gen1

size: 14.32 GiB block-size: physical: 512 B logical: 512 B type: USB

rev: 2.1 spd: 480 Mb/s lanes: 1 mode: 2.0 tech: N/A serial: <filter>

fw-rev: 1.00 scheme: MBR

SMART Message: Unknown USB bridge. Flash drive/Unsupported enclosure?

Partition:

ID-1: / raw-size: 896.8 GiB size: 896.8 GiB (100.00%)

used: 699.05 GiB (77.9%) 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: 896.8 GiB size: 896.8 GiB (100.00%)

used: 699.05 GiB (77.9%) fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:2

ID-4: /var/log raw-size: 896.8 GiB size: 896.8 GiB (100.00%)

used: 699.05 GiB (77.9%) fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:2

ID-5: /var/tmp raw-size: 896.8 GiB size: 896.8 GiB (100.00%)

used: 699.05 GiB (77.9%) fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:2

Swap:

Kernel: swappiness: 133 (default 60) cache-pressure: 100 (default)

ID-1: swap-1 type: zram size: 31.29 GiB used: 0 KiB (0.0%) priority: 100

dev: /dev/zram0

ID-2: swap-2 type: partition size: 34.42 GiB used: 0 KiB (0.0%)

priority: -2 dev: /dev/nvme0n1p3 maj-min: 259:3

Sensors:

System Temperatures: cpu: 43.0 C mobo: N/A gpu: nvidia temp: 40 C

Fan Speeds (RPM): N/A gpu: nvidia fan: 0%

Info:

Processes: 314 Uptime: 16m wakeups: 0 Memory: total: 32 GiB

available: 31.29 GiB used: 4 GiB (12.8%) Init: systemd v: 253

default: graphical tool: systemctl Compilers: gcc: 13.1.1 Packages:

pm: pacman pkgs: 1395 libs: 414 tools: octopi,pacaur,paru Shell: fish

v: 3.6.1 default: Bash v: 5.1.16 running-in: konsole inxi: 3.3.28

Garuda (2.6.16-1):

System install date: 2023-07-06

Last full system update: 2023-07-28

Is partially upgraded: No

Relevant software: snapper NetworkManager dracut nvidia-dkms

Windows dual boot: Probably (Run as root to verify)

Failed units:

Hey, pretty sure that's exactly what I used, though it was posted in a github, but I'm pretty sure it was the GE repo.

Create a Xorg Config file:

sudo nvidia-settings

Save the file as '/etc/X11/xorg.conf and then Move it to the right directory:

sudo mv /etc/X11/xorg.conf /etc/X11/xorg.conf.d/20-nvidia.conf

1 Like

Please post always your terminal in- and output as text like
~~~
garuda-inxi
System:
Kernel: 5.18.15-zen1-2-zen arch: x86_64 bits: 64 compiler: gcc v: 12.1.1
parameters:
~~~

looks like

garuda-inxi
System:
  Kernel: 5.18.15-zen1-2-zen arch: x86_64 bits: 64 compiler: gcc v: 12.1.1
    parameters:

in forum.

I have edited your post.

Firstly, I would update your BIOS to the latest version. (You are missing out on Resizable-BAR and a ton of important security fixes.)

Other than that, I would take a look down through the ProtonDB on the game in question. (Reports vary greatly on the game, probably because its still in early access). Maybe try proton-GE if you haven’t already, as sometimes that can help with frame-rate.
https://www.protondb.com/app/1326470

2 Likes

Hi there, welcome to the community

Can you try some games that Can run directly on Linux, that is without protondb?

For example CS:GO

And check fps?

Alright, there doesn't seem to be a problem after all.
I have tested @RodneyCK's suggestion, and also tested various games on various installations of Garuda and Windows and the performance is the same on all systems.
It's most likely an issue with me playing on 3840x1080 and thinking to myself that I'm playing "at 1080p", while aiming for 144fps and the modern gaming industry no longer optimizing their games.
Thanks for everybody's input.

@SGS thanks, will keep that in mind, I tried to do a collapsable spoiler thing with the [o] stuff.
@Kayo Good call, will do that, the gigabyte page does make that update seem pretty crucial
@Naman Yeah, in the course of testing multiple games I ran the Rise of the Tombraider benchmark which performed the same on all systems.

1 Like

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