protonscr

Insanely low performance in God of War and nothing else

dxvkclosed can't reproduce
doitsujin/dxvk#2938 · opened 2022-09-17 by pibberflibbits · updated 2024-11-11 · 27 comments · github
Ppibberflibbits 2022-09-17 github

I am running God of War on a 3080, and a 12900k. I have the latest kernel, the latest drivers, and am using proton-experimental (but this issue exists on all versions of proton). When I launch God of War through Steam or Lutris I get around 25 fps, on lowest settings and at 10% resolution scaling. It says only 20-30% of my CPU is being used (which might actually be normal?), but my GPU is being used as expected.

I am using all of the ProtonDB recommended settings for both launch options as well as the steam play settings. Again, every other game in my steam library runs perfectly, and utilizes the CPU properly. I am also running gamemode but this issue existed before use.

I am using 2 monitors with Xrandr but have tried disabling xrandr and running on one monitor, and have even unplugged the monitor from my GPU.

Any help would be greatly appreciated!

Software information

God of War
issue persists on all settings.

System information

  • GPU: RTX 3080
  • Driver: 515.65.01
  • Kernel: 5.19.9-arch1-1
  • Wine version: Proton Experimental
  • DXVK version: 9fa587e

Log files

GoW_d3d11.log
GoW_dxgi.log

Ddoitsujin maintainer 2022-09-17 github

Works fine on both my AMD desktop and the RTX 2060 on my laptop (some 44 FPS at 1440p Original preset in the menu, no DLSS).

Can you run the game with DXVK_HUD=full and post a screenshot when it's slow?

Ppibberflibbits 2022-09-18 github

20220917180436_1

It does not really go past this, it sees at max 25fps during actual game play.

Ddoitsujin maintainer 2022-09-18 github

33% GPU utilization but nothing else that's suspicious in the HUD. Just seems extremely CPU-bound for some weird reason.

Please try WINE_CPU_TOPOLOGY=8:0,1,2,3,4,5,6,7 , maybe the game really doesn't like Alder Lake and its weird core and cache topology on Linux for whatever reason. If that doesn't help, I'm pretty much out of ideas though, assuming you don't have any insane launch options set (e.g. Vulkan validation, excessive wine logging, etc). There's nothing here that looks like a DXVK issue though.

Ppibberflibbits 2022-09-18 github

Yeah no clue whats happening, but I just installed GoW on my GPU pass through Win11 VM and the issue persisted even there, so there is definitely something bigger here. It's just so odd that this only manifests with this game, very strange.

IIglu47 2022-09-18 github

Kernel: 5.19.9-arch1-1

@pibberflibbits could you also make a test not on the 5.19 branch?

Ppibberflibbits 2022-09-19 github

Reverting the Kernel made everything run as normal! Thanks a ton guys, I definitely would not have figured this out on my own!

Mmisyltoad 2022-09-19 github

If you go back to 5.19, can you send the output dmesg when the game is running to see if there is anything of interest?

Ppibberflibbits 2022-09-24 github

If you go back to 5.19, can you send the output dmesg when the game is running to see if there is anything of interest?

https://pastebin.com/L2LuYw5d

IIglu47 2022-09-24 github

https://pastebin.com/L2LuYw5d

@pibberflibbits could you try add split_lock_detect=off boot parameter for kernel 5.19 and made retest?

Ppibberflibbits 2022-09-25 github

Yup that fixed it, it seems to be running the same as it did on 5.18 now, if not a bit more stable. I can finally update my system now! But what exactly did that fix, if you don't mind me asking?

IIglu47 2022-09-25 github

from logs above:

[  329.065344] x86/split lock detection: #AC: GoW.exe/4190 took a split_lock trap at address: 0x140b33cbf
[  329.066055] x86/split lock detection: #AC: GoW.exe/4143 took a split_lock trap at address: 0x140b35229
[  329.092907] x86/split lock detection: #AC: GoW.exe/4189 took a split_lock trap at address: 0x140b33cbf
[  329.122778] x86/split lock detection: #AC: GoW.exe/4191 took a split_lock trap at address: 0x140b33cbf
[  329.212372] x86/split lock detection: #AC: GoW.exe/4188 took a split_lock trap at address: 0x140b33cbf
[  329.392868] x86/split lock detection: #AC: GoW.exe/4192 took a split_lock trap at address: 0x140b33cbf
[  329.676301] x86/split lock detection: #AC: GoW.exe/4187 took a split_lock trap at address: 0x140b33cbf

in the 5.19 kernel, "the split lock warning" behavior has been changed:
commit message
https://docs.kernel.org/5.19/x86/buslock.html
https://www.phoronix.com/news/Linux-5.19-Split-Lock

so manual switching from default setting to split_lock_detect=off helps as workaround here.

Ffarfromrefug 2022-12-17 github

Does anyone knows how to set split_lock_detect=off on PopOs?

IIglu47 2022-12-18 github

Does anyone knows how to set split_lock_detect=off on PopOs?

@farfromrefug sorry, I've never used Pop_Os, but it should probably be exactly the same as on Ubuntu
https://duckduckgo.com/?q=how+to+permanently+add+kernel+boot+parameters+via+GRUB+on+Ubuntu

Ffarfromrefug 2022-12-18 github

@Iglu47 actually found out that on PopOS you need to do sudo kernelstub --add-options split_lock_detect=off
thanks!

MMoswdys 2024-02-29 github

https://pastebin.com/L2LuYw5d

@pibberflibbits could you try add split_lock_detect=off boot parameter for kernel 5.19 and made retest?

how do i do that again?

BBlisto91 2024-02-29 github

Depends on your boot loader. You can see some examples on the Arch wiki https://wiki.archlinux.org/title/kernel_parameters
If in doubt about a specific distro I'd reach out to any help forums or chats from your distro

MMoswdys 2024-02-29 github

Depends on your boot loader. You can see some examples on the Arch wiki https://wiki.archlinux.org/title/kernel_parameters If in doubt about a specific distro I'd reach out to any help forums or chats from your distro

ya have a discord where you can tell me how to do this comfortably? also im on ubuntu if its needed to be known
im new to linux so i dont even know what a kernel is

BBlisto91 2024-02-29 github

I don't use Ubuntu myself but i think they have a lot of help forums and chats which might be better to seek out https://ubuntu.com/community/support

MMoswdys 2024-02-29 github

I don't use Ubuntu myself but i think they have a lot of help forums and chats which might be better to seek out https://ubuntu.com/community/support

aiiight ill listen to ya ill come back if i realise im starting do damage my brain
also i had pardus before ubuntu which was way more cancer im happy i switched to ubuntu but you know linux never runs out of problems with gaming.Also there is the "AskUbuntu" website.I will try it

MMoswdys 2024-02-29 github

I don't use Ubuntu myself but i think they have a lot of help forums and chats which might be better to seek out https://ubuntu.com/community/support

do i access the kernel settings from bios settings or?

BBlisto91 2024-02-29 github

It's usually a file on system and or a command. It's better to try and ask via one of the forums above.

MMoswdys 2024-02-29 github

I don't use Ubuntu myself but i think they have a lot of help forums and chats which might be better to seek out https://ubuntu.com/community/support

hey man i managed to do the parameter thing but the game still runs low on fps like 20

got any ideas why this still might be happening? and the game goes straight up to 60 fps in the pause menu which didnt happen before it was 20 fps like the game itself

Lluisalvarado 2024-07-13 github

Is this still happening? I am asking because the only think that I can think as a difference are my kernel parameters in the grub file which are:

GRUB_CMDLINE_LINUX_DEFAULT="mitigations=off nvidia-drm.modeset=1 ibt=off split_lock_detect=off split_lock_mitigate=0 nokaslr"
GRUB_CMDLINE_LINUX="vdso=0 ignore_rlimit_data nvidia-drm.modeset=1 sched_migration_cost=512 pci=nommconf preempt=full nohz_full=all threadirqs"

I have an Nvidia card just in case. The following shows the current performance: https://www.youtube.com/watch?v=GE1u3DeLD5s

But again, it was the only thing I found as a difference. I am also playing on steam and using proton experimental at the moment.

Gguitaripod 2024-11-09 github

Solved for me, thanks ✅

for Arch, this is how I have it:

[marcus@arch ~]$ cat /boot/loader/entries/arch.conf 
title Arch Linux
linux /vmlinuz-linux
initrd /intel-ucode.img
initrd /initramfs-linux.img
options root=UUID=8cbc0d27-c578-43a5-8c4c-a6f8a9c179c1 rw split_lock_detect=off amdgpu.ppfeaturemask=0xffffffff

14700K, 7900XTX

sudo reboot after adding that in the boot config.

Kkode54 2024-11-09 github

Or you can turn off split lock mitigation with a sysctl at runtime, and turn it back on when you're done with the game.

https://wiki.cachyos.org/configuration/general_system_tweaks/#6-disabling-split-lock-mitigate

Gguitaripod 2024-11-09 github

Is there a reason I would do this over what I currently have?

Kkode54 2024-11-10 github

Not really, actually. I was misinformed by someone who thought this was a security feature, but in actuality, it's designed to spite developers who make the mistake of using split locks. While they're generally a bad idea, because there is no performant way to implement them, it was the kernel devs who decided "the way to fix this is to default all users to be punished by making them even 1000x slower, that'll get the devs to stop doing this"

Except it's proprietary software, for a proprietary operating system that will either never punish devs for using split locks, or if they do, they'll make workarounds for common apps so nobody will notice anyway.

Edit: And then I was reminded of why this can potentially be a security issue. At least in an environment where you don't totally control the machine in question, like a server, adversarial use of split locks can bring a machine to its knees, and the problem gets worse the more cores the CPU has.

Proton versions

Launch options