You can sign up to get a daily email of our articles, see the Mailing List page!
  Go to:
[Solved] Poor Steam Play performance on enough decent hardware
LordDaveTheKind commented on 17 June 2019 at 5:52 pm UTC

Hello community,
Recently I decided to give a try to the latest game from FromSoftware (Sekiro™: Shadows Die Twice), because the nice and satisfactory experience that lots of fellow gamers had, and also because the various tests run by Linux players (such as at this link) were encouraging.

Computer Specs are the following:
Proton:4.2-4
Distro:Ubuntu 19.04 (XFCE Desktop Environment 4.12)
Kernel:5.0.0-15-generic

RAM:64 GB
GPU Driver:NVIDIA 430.14
GPU:NVIDIA GeForce GTX 1080 Ti
CPU:AMD Ryzen Threadripper 2990WX 32-Core


When I looked up (also on ProtonDB) all the reports from people with the same hardware, I read coherently about a seamless execution of the game at 1440p 60fps.

To my concern, I have never been able to experience on my computer the same performances stated by the other players. In my case, the frame rate is hideous and very variable, with an average of 30fps, peaks of 55 and drops of 7~8 (in particular when moving from one area to another), which makes the whole game unplayable as soon as you face a little stronger or faster enemy.

I tried several optimization workarounds:

  • Disabled the Desktop Environment Compositor, as suggested in some reports;

  • Forced the disable of VSync on the NVIDIA Graphics Driver settings;

  • Disabled the Steam in game overlay;

  • Overclocked the CPU to High Performance mode;

  • Run the game with the Lutris Wine Steam option in order to enable ESync;

  • Launched it with Feral Game Mode library;

  • Moved the game graphics settings to Low/Medium/High,

but none of the above (in particular the last one) has given any significant performance improvement.

I have experienced the same behaviour with other games, such as the following:

  • Dark Souls III, where I'm not able at all to experience the 60fps at 1440p as mentioned in other reports, but just an average between 30 and 50, which drops as soon as Iudex Gundyr hits a blow;

  • The Initial, which it used to work smoothly on my previous hardware, an Intel i7 with a NVIDIA GTX 960, but a crappy 7fps on the better one.


As I'm not able to explain the cause of the poor performance, can you recommend anything I could check in the OS? Is out there any benchmark which could trace the reason of it?

Another strange experience is moving the mouse for the camera control: any mouse movement will cause a drop of the frame rate, which restores just when I stop the mouse. This issue actually happens with every Wine/Proton game (but not for native Linux games, luckily), and I don't know honestly if it can be even minimally related to the one above.

Cheers,
Dave

g000h commented on 17 June 2019 at 9:28 pm UTC

Looking at the various specs you've provided it certainly looks like your PC should be able to manage the load. I did think that maybe your multi-core processor could be somewhat under-clocked and the game might favour single-threading, but your CPU does boost up to a decent clock-speed so I can't see that happening.

I quite like to run "psensor" in the background, when I'm gaming, and check out the various graphs of temperature (CPU and GPU) and CPU load. Computers (CPU and/or GPU) can ramp-down performance when they get too hot. Maybe the internals of your PC are getting too hot (ideally CPU temp shouldn't go over 70 deg C and GPU temp shouldn't go over 90 deg C).

Maybe your PC case should have more case fans, and maybe your CPU could have a better CPU fan.

Your reported Proton (4.2-4) isn't the latest one (4.2-7 at time of writing).

Out of interest what hard drives are in your system? Those components could also contribute to slow-downs.

gurv commented on 17 June 2019 at 9:35 pm UTC

Hello,

Your problem is most likely your 2990WX CPU
This CPU is bad for games in its default configuration because it's made up of four 8-core dies, only two of which have direct access to the memory. The other two dies access memory through the first two dies which dramatically increases the latency.
And games are *VERY* sensitive to memory latency.

You can see your cpu topology with numactl:
sudo apt install numactl
numactl --hardware

You can try pinning the game to the first die without including any logical cores (SMT).
In the game's steam properties, set the launch command to: taskset -c 0,2,4,6,8,10,12,14 %command%

Also make sure these cores are piloted by the performance governor:
sudo apt install cpufrequtils
for i in {0..15}; do sudo cpufreq-set -g performance $i; done


PS: make sure you are using the latest NVidia drivers: 430.26 if I'm not mistaken

Edit: this is more complicated than I thought.
It seems the numbering of Threadripper cores follows a different scheme than Ryzen which would be retarded but hey...
So you might get better results with taskset -c 0-7 %command%
or with taskset -c 8-15 %command%

In the end, it will depend on how you installed you ram and graphics card: https://legitreviews.com/wp-content/uploads/2018/08/2990wx-diagram.png

You can see where your memory and graphics card are attached with lstopo:
sudo apt install hwloc
lstopo

Which should give you something like this: https://i.redd.it/xwch3642eeq11.png
this will show you to which cpu cores your gpu and memory are attached.
You want to pin the game to the cores closest to your memory and gpu while avoiding SMT cores.

LordDaveTheKind commented on 18 June 2019 at 11:06 am UTC

g000hI quite like to run "psensor" in the background, when I'm gaming, and check out the various graphs of temperature (CPU and GPU) and CPU load. Computers (CPU and/or GPU) can ramp-down performance when they get too hot. Maybe the internals of your PC are getting too hot (ideally CPU temp shouldn't go over 70 deg C and GPU temp shouldn't go over 90 deg C).
Thank you. I'll give it a try.

g000hOut of interest what hard drives are in your system? Those components could also contribute to slow-downs.
Here below the list:
  • 500GB Samsung 860 2.5" EVO SSD, SATA 6Gb/s (upto 550MB/sR | 520MB/sW), used as root;

  • 1TB Samsung 860 EVO 2.5" SSD, SATA 6Gb/s (upto 550MB/sR | 520MB/sW), used as /home (and hence games binaries/assets storage);

  • 2TB SEAGATE BARRACUDA SATA-III 3.5" HDD, 6GB/s, 7200RPM, 64MB CACHE, used as an archive and mounted if required.



Cheers,
Dave

LordDaveTheKind commented on 18 June 2019 at 11:18 am UTC

gurvYour problem is most likely your 2990WX CPU
This CPU is bad for games in its default configuration because it's made up of four 8-core dies, only two of which have direct access to the memory. The other two dies access memory through the first two dies which dramatically increases the latency.

Thank you so much for the suggestions. I will follow them and keep you posted here.

Cheers,
Dave

LordDaveTheKind commented on 18 June 2019 at 7:29 pm UTC

gurvSo you might get better results with taskset -c 0-7 %command%
or with taskset -c 8-15 %command%

In the end, it will depend on how you installed you ram and graphics card: https://legitreviews.com/wp-content/uploads/2018/08/2990wx-diagram.png

You can see where your memory and graphics card are attached with lstopo:
sudo apt install hwloc
lstopo

Which should give you something like this: https://i.redd.it/xwch3642eeq11.png
this will show you to which cpu cores your gpu and memory are attached.
You want to pin the game to the cores closest to your memory and gpu while avoiding SMT cores.

The result given by lstopo on my CPU is the following: https://i.imgur.com/vVsx9yc.png
I tried then to run taskset -c 8-15 %command% with the core in Performance mode, and I can notice the difference, although it is still a low value, in the range of 30-45 fps for the aforementioned games (still very far from the 60fps experienced in the other reports).
I repeated again the toggle on/off of the Stream Overlay, the DE Composition, the game Video settings, the version of Proton, etc. but those variables won't change significantly the overall performance.

I must say that this strange behaviour is not happening in several other games (which of course I'd rather play in these days) such as The Witcher® 3: Wild Hunt (running at 75 fps on the average) or any Linux native game (running instead at 95 fps). It can be an issue related to the games bad design (FromSoftware games are historically infamous for having several bad design issues on PC), but seriously it should be something else as well.

I'll continue my researches, and keep this thread updated in case I find anything else.

Thank you so much anyway for your support.

Cheers,
Dave

g000h commented on 18 June 2019 at 8:23 pm UTC

LordDaveTheKind
g000hI quite like to run "psensor" in the background, when I'm gaming, and check out the various graphs of temperature (CPU and GPU) and CPU load. Computers (CPU and/or GPU) can ramp-down performance when they get too hot. Maybe the internals of your PC are getting too hot (ideally CPU temp shouldn't go over 70 deg C and GPU temp shouldn't go over 90 deg C).
Thank you. I'll give it a try.

g000hOut of interest what hard drives are in your system? Those components could also contribute to slow-downs.
Here below the list:
  • 500GB Samsung 860 2.5" EVO SSD, SATA 6Gb/s (upto 550MB/sR | 520MB/sW), used as root;

  • 1TB Samsung 860 EVO 2.5" SSD, SATA 6Gb/s (upto 550MB/sR | 520MB/sW), used as /home (and hence games binaries/assets storage);

  • 2TB SEAGATE BARRACUDA SATA-III 3.5" HDD, 6GB/s, 7200RPM, 64MB CACHE, used as an archive and mounted if required.



Cheers,
Dave

Okay, well I think we've eliminated that possible issue - Your drives are fast enough that they shouldn't be causing problems. (Although for ultimate performance, some NVMe SSD drive models are much quicker than SATA SSDs.) I think gurv's comments on CPU tweaking seem good to pursue. Maybe it would be good to visit your motherboard firmware config and have a poke around there as well

LordDaveTheKind commented on 19 June 2019 at 8:14 pm UTC

Thank you so much for the support on the issue.

Now the incident seems to be more mysterious, but I have a lead probably.

I've installed SteamOS on a SSD disk partition, dual booted the PC, and installed DS3 on it. The game has seamlessly got 60 fps at 1080p on Max graphical settings. Screenshot here.

I can see that both the Vulkan API and the Driver are a little downgraded, but I don't think this is the issue. Now the tough part would be to analyse all the differences between the two runs. What can I check for a performance check during the game execution?

Cheers,
Dave

denyasis commented on 19 June 2019 at 10:25 pm UTC

This might sound dumb, but since it works on an alternate OS, it might be worth a look:

Is this commuter "gaming only"or do you do other things with it? Perhaps you have program or deamon running in the background that is using a bunch of resources.

Only other thing that comes to mind are the CPU mitigations that have been coming through the kernel over the past year. Presumably, steamos might have them off to squeeze more performance out of the system?

gurv commented on 19 June 2019 at 10:46 pm UTC

LordDaveTheKindThank you so much for the support on the issue.

Now the incident seems to be more mysterious, but I have a lead probably.

I've installed SteamOS on a SSD disk partition, dual booted the PC, and installed DS3 on it. The game has seamlessly got 60 fps at 1080p on Max graphical settings. Screenshot here.

I can see that both the Vulkan API and the Driver are a little downgraded, but I don't think this is the issue. Now the tough part would be to analyse all the differences between the two runs. What can I check for a performance check during the game execution?

Cheers,
Dave

Hmm, that's quite strange indeed.
Theoretically it could be a regression in the driver version or a more optimized cpu scheduler on SteamOS.

That said, I've noticed something wrong in your lstopo output: all your ram is attached to numa node #2.
This means you only have half the memory bandwidth you could get and that only that numa node (core 8-15,40-47) has direct access to memory.
Check your motherboard manual, it should tell you how to best populate your ram slots.
Unless you have two 32GB sticks, you should be able to get the full 4-channel bandwidth.

Back to the topic, From Software games can indeed be finicky.
Maybe you could try restricting the game to only one ccx to avoid the thread synchronization penalty:
taskset -c 8-11 %command%
or (with smt):
taskset -c 8-11,40-43 %command%

> Thank you so much anyway for your support.
You're welcome

I'm glad to see you have at least found a way to game with a good framerate.
Good luck taming that monster cpu

Edit:
Oh just thought about something: you could get a pretty heavy framerate penalty if NVidia's driver thread is not on the same ccx. I think I've seen that happen when fiddling on my Ryzen.
So you may have to try all the ccx pinning possibilities:
taskset -c 8-11,40-43 %command%
taskset -c 12-15,44-47 %command%
(you should fix the ram slots assignment before trying the next two as currently numa node #0 doesn't have direct access to memory)
taskset -c 0-3,32-35 %command%
taskset -c 4-7,36-39 %command%

gurv commented on 19 June 2019 at 11:03 pm UTC

I've had another idea though I doubt it's the problem since you're using Ubuntu 19.04 which should have systemd 240.

From the esync wiki (https://github.com/lutris/lutris/wiki/How-to:-Esync):
"run ulimit -Hn to see open files limit (it should report 524288)."

  Go to:

Due to spam you need to Register and Login to comment.


Or login with...

Livestreams & Videos
Community Livestreams
See more!
Popular this week
View by Category
Contact
Latest Comments
Latest Forum Posts