There's an interesting issue with certain Linux CPU governors that will actually bring down performance in Vulkan games. You might not need this, depending on what CPU governor you have installed.
You might end up seeing jerking or micro-stutter, far more than you would in OpenGL games. The issue is that when using OpenGL in games, you're generally taxing a single core of your CPU due to less multi-threading. With Vulkan spreading the load more, your CPU isn't being used so much.
The Linux CPU governor takes that as an opportunity to bring down your CPU performance, as right now it's not the smartest bulb in the tanning bed.
Here's what a Croteam developer said about the issue:
QuotePowersave governor is an awful choice for playing games. It may quite be the case that it's not happening for OpenGL especially because GL runs slower.
When the game is running fast enough that CPU has to wait on the GPU, the governor sees that as an opportunity to downclock the CPU, or put cores to sleep. The jerking is a result of the CPU throttling up and down very quickly.
In general, CPU governors on Linux are much, much dumber than the Windows one. (It seems that Windows overrides the throttling for all 3D apps, or similar.)
That's why we have this warning in the log. Switch over to Performance governor, at least while playing.
So a tip for now when playing Vulkan games on Linux: Set your CPU to high performance mode, you can do it like so in terminal ("performance" is just an example, see more here):
echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
A higher performance mode will generally result in higher power consumption too.
Then to set it back to normal. You don't need to use "powersave" see more options here, as it's just an example. According to the Arch Wiki you likely want "ondemand" for AMD:
echo powersave | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
You can find out what performance mode you're in right now by running this in terminal:
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
My default on the Intel i7 5960x is powersave, for example.
Hopefully this issue will be fixed as more games come over to Vulkan. It would be nice if developers didn't need to code around issues like this on Linux.
Quoting: M@GOidFor a more easy way to change the settings, install the package "indicator-cpufreq"("sudo apt install indicator-cpufreq" for those of you in Ubuntu). It will show a icon in your taskbar were with 2 mouse clicks you can change to the Performance governor and back. I use it for both AMD and Intel CPUs for years and it works great, for any DE.
Sounds good, thanks!
Quoting: M@GOidFor a more easy way to change the settings, install the package "indicator-cpufreq"("sudo apt install indicator-cpufreq" for those of you in Ubuntu). It will show a icon in your taskbar were with 2 mouse clicks you can change to the Performance governor and back. I use it for both AMD and Intel CPUs for years and it works great, for any DE.
Hmmm, perhaps I'm doing something wrong, but near as I can tell, nothing named indicator-cpufreq is available to Manjaro Gnome through either the repos or AUR. Could someone confirm or correct me about this, please?
Quoting: EikeIt's worth a try. I had to do it - strange enough - for Limbo to work in the correct speed. :)
How silly, it does actually reduce stuttering in Shadow Tactics, making it quite playable. When zooming out too much it is still laggy though, but I do not think I am just imagining an improvement. Will try disabling turbo as well, why not.
Does this persist over reboot? I presume not. I will try this with PoE also, which is also Unity I think and also suffers from stuttering for me.
I feel kinda cheated man, I've worked so hard with GPU drivers, .ini tweaks etc. with many different games and all the while I've thought "hrmm well i THINK this is CPU bound, not much to do about that, I expect the CPU must be working full power since I have power cable plugged in always, oh well.". This is too simple.
Edit: I feel like my avatar looks, I realize now looking at my post. WTF man. I even have the beard and everything. SPOOKY ;)
Last edited by buenaventura on 23 March 2017 at 12:38 pm UTC
Quoting: M@GOidFor a more easy way to change the settings, install the package "indicator-cpufreq"("sudo apt install indicator-cpufreq" for those of you in Ubuntu). It will show a icon in your taskbar were with 2 mouse clicks you can change to the Performance governor and back. I use it for both AMD and Intel CPUs for years and it works great, for any DE.
Seeing as this lovely utility seems to be missing from the Arch repositories, I whipped up this Argos script instead.
I wish there was a way to not have to put in my password on every change, maybe someone knows how to work around that?
Quoting: FredOThat is good information, thanks. I ran some benchmarks across Hitman, Deus Ex, Talos Priciple and CoH2 and saw some extra FPS in all of them with "performance" set. Particularly CoH2 took a good boost, which I'm happy about because I always thought there was fat bottleneck on my system with that game.Good to hear it helped.
Be sure to read up on the different settings for sure though, as stated mine are only examples.
Quoting: buenaventuraGlad to hear it helped as well :)Quoting: EikeIt's worth a try. I had to do it - strange enough - for Limbo to work in the correct speed. :)
How silly, it does actually reduce stuttering in Shadow Tactics, making it quite playable. When zooming out too much it is still laggy though, but I do not think I am just imagining an improvement. Will try disabling turbo as well, why not.
Quoting: CybolicI wish there was a way to not have to put in my password on every change, maybe someone knows how to work around that?
You could give setuid a try. Make a shell script as root, and then:
chmod u+s script.sh
You should be able to run it as a user with it's owner rights, which are root.
Last edited by HailToTheGrail on 23 March 2017 at 12:56 pm UTC
Quoting: HailToTheGrailYou could give setuid a try. Make a shell script as root, and then:chmod u+s script.sh
You should be able to run it as a user with it's owner rights, which are root.
Of course, this gives root access to somebody able to login as you (and edit the script).
Maybe giving suid root to the called executables would make a smaller security hole.
See more from me