Atrocious CSGO performance

There are plenty of CSGO on Linux related topics out there on the internet, and as time goes on, more and more people report on better performance, and some even claim that CSGO somehow works better on Linux than on Windows.
I recently did a benchmark of CSGO on my both of the operating systems, and found that the one on Linux works better by 20fps avg. It came as a real surprise to me. I fired up CSGO and played a competitive game with my friends only to experience 2 crashes, and horrible stutters, FPS drops and input lag. The automated fps_benchmark map seemed nice, so it crossed my mind that the issues might be arising when the game receives user input. I didn’t really delve deeper than that. Just out of curiosity, I also installed Crysis 2 with the latest version of proton, and the experience was the same (same input lag, same FPS drops, and the same stutters) (not sure if its connected since Crysis 2 is not native anyway).

I have an Athlon X4 860K with an RX580 and 8GB of ram. I use Linux Mint 19 with the 5.0.0-20 kernel. I tried the same test on the latest freshly installed Manjaro Gnome with the 5.1.16-1 kernel, and got the same results.

Does anyone know what could be causing such awful performance?

What is your CPU, GPU, and RAM usage while running into issues?

3 Likes

resolution?
graphics settings?

1 Like

1440x900@60Hz
Most of the things were set to low and Vsync was off.

If I remember correctly, CPU was on half usage on all cores and RAM was 3.something.
I will test it again later when I get the chance, and post more accurate results.

csgoConfigs1
csgoConfigs2

I was off the mark with my initial measurments:
Htop before:
htopbefore
Htop ingame:
htopin
Radeontop ingame:
Screenshot%20from%202019-07-15%2021-06-10

are these ingame numbers while you’re experience lag / stutter?

yep, those are the numbers

try disabling both MSAA and FXAA

1 Like

My bad. I didn’t measure the GPU usage properly. The image has been updated. That’s from a scenario in which I am staring at a wall (before disabling msaa and fxaa).
Disabling MSAA and FXAA solved the problems.
Why are MSAA and FXAA causing those problems, and can this be fixed somehow without disabling them?

dont use FXAA, it looks bad. And don’t use MSAA x4, its very expensive and doesn’t buy you much, just stick with MSAA x2.

1 Like

I can do without FXAA. Too bad about MSAA though. Even when set to x2, I still get occasional microstutters. The FPS on the other hand doesn’t dip below 120. I guess I’ll try playing without AA. CSGO is the only reason I still have Windows around. I guess the API translation layer doesn’t do well with AA.
Thanks for your help.

you could always try running it with proton as well, though I don’t know how much that would help.

I tried running it with proton 4.2 already, but if refused to start, so I gave up.

1 Like

Are you running OS on a HDD or SSD?
Your GPU is more then adequate to run CSGO just fine even with MSAA x2.

I have a feeling the issue might have to do with your SWAP
in your terminal enter:

swapoff
(might have to sudo, don’t remember)

then start the game and see if that helps. This is not permanent change, after a reboot your swap will be enabled again.
You can also turn it back on with
swapon

edit: Also don’t use FXAA + MSAA together, they do the same thing al tho using different techniques. So use one or the other, not both, waste of resources.

Valve Anti-Cheat probably prevents it from starting. VAC isn’t even on the priority list for Proton.

Its on an SSD.
Disabling swap didn’t help.
FPS is fine on most scenarios, but the game just doesn’t feel as responsive like it does on windows. I guess I will just be using the windows version until they release a native opengl/vulkan version.

That sucks, windows is cancer!
Hopefully this will be resolved soon.

Have you tried using the performance cou guvenor

I also had much worse CSGO performance on Linux at least with the native version. Wine wont work with wine steam on Lutris with Gallium nine . d9vk made csgo on Wine start at the very least but crashed in games and VAC most likely wouldn’t work for it. Proton most certainly won’t startup csgo and tf2 but other valve games did, probably left4dead2 as well.

The openGL performance was effectively halved for me compared to Windows dx9 with my Rx580 8GB sapphire Pulse and my Ryzen 5 1600 3.7GHz with 3200MHz cl14. For some reason CSGO Linux just doesn’t seem to like AMD gpus (and probably my cpu as well) at least on the open source amdgpu driver. Maybe its much better for Nvidia propreitary gpu driver for that particular game.

In Windows i would get easily 200-350fps on 1080p even with settings turned up, on lower resolutions i would see a doubling of that nearly such as close to 500fps at times even with lower settings. However on Linux at least for me in any distro I tried I had half the FPS, though to be fair windows 10 also seemed to perform kinda worse on it compared to windows 7 (I wont recommend windows 7 though at all though and i stopped using windows anyway. Like 120fps-250fps. Still playable and responsive but a definite downgrade compared to What i was used to in Windows. On ntfs partition it stuttered like crazy but on ext4 it was fine on Linux.

Input lag and sensitivity felt mostly similar for both OSes for me though.

I think it might be the gpu scaling also when i tried lower resolutions since it doesn’t stretch the same way or scale to have those extra fps gains. Disabling steam overlay granted a lot more fps than when I disabled it in Windows.

Opengl performance was better for me in Linux on other games compared to the awful Opengl performance I had on Windows though , and dx9 to Gallium Nine opengl performance was really good to end up surpassing native dx9 performance for windows on Proton or Wine+lutris.
Native opengl games like Minecraft, Half life, CS 1.6, etc did indeed perform a lot better for me in Linux too.

Valves ToGL had a large performance impact that I end up using Proton instead for many Source Engine games and get a doubling in FPS at times, especially when I end up running it in D9VK for vulkan. I have used MESA ACO for vulkan as well which improved things further. Dx10-11 to vulkan performing better than some native games on Windows for me at times with Proton.

I wonder if I tried a GTX 1060 on my ryzen 5 1600 and then see what FPS I get in Linux csgo as its comparable to my Rx580 in performance, since it seems like Nvidia drivers weren’t as effected or even had a gain on FPS on csgo. Even better when it was native opengl games because Nvidia was really good for opengl it seems. Or seeing what fps I would get with an equivalent intel CPU on amd or nvidia gpus as a benchmark to fps in linux csgo.
Valve ToGL, Eon, or wined3d opengl performance really destroys my FPS for games, but for Proton or Wine, using Gallium Nine largely solved the issue on dx9 to OpenGL , or the d9vk alternative with dx9 to vulkan.

I might test putting this on an SSD but I don’t think it will be much difference.

Manjaro I’m using with the latest Amdgpu driver, kernel 5.2, latest microcode and more. Since I went from Linux mint/ ubuntu based stuff to rolling release distros, I had much better performance overall but OpenGL and games like CS:GO performance is still a problem for me with how much fps is lowered. I have performance mode enabled on cpu governor or gamemode command running anyway.

I did have to lower polling rate on my Logitech G402 mouse to 500Hz as some games didn’t like my 1000Hz polling rate on Wine or Linux games and it felt more consistent. Might help with your stuttering issues. My CPU does perform a lot better than an Athlon for this game though.

Steam Launch commands I used that may help: GL_THREADED_OPTIMIZATIONS=1 mesa_glthread=true vblank_mode=0 gamemoderun %command% +exec autoexec.cfg +cl_forcepreload 1 -nojoy -novid -freq 144 -refresh 144 .
I’m not sure if the mesa_gl_thread works or gl_threaded_optimizations though. 144hz because of my 144hz monitor, vblank mode if you want to bypass vblank for disabling vsync completely, gamemoderun for performance mode. autoexec is optional.

1 Like