Flight Simulator 2020 VM performance


Recommended Posts

Hey everyone,

 

I recently installed Flight Simulator 2020 on a Windows 10 VM and the performance is quite bad. Naturally I would like to find (and hopefully fix) the problem. The VM has 2 vdisks attached. Vdisk1 is stored on the cache (fast SSD) and contains the OS + the game's cache. Vdisk2 is stored on the array (HDD) and contains the rest of the game.

 

Here are my findings so far.

 

- FlighSim2020 runs at 15-20 fps

- Changing graphics settings does not influence fps at all

- The game's dev tools report the main thread to be the bottleneck

- GPU utilization is at ~25%

- Task manager shows that 1 core is at ~75% utilization while all other cores are at ~40%

- RAM does not seem to be a limiting factor. No performance difference could be observed between 16GB and 32GB

- The number of cpu cores assigned to the VM does not influence performance (Tested with a minimum of 4 cores / 8 threads).

 

My system:

CPU: Threadripper 1920X

Mainboard: ASRock X399 Taichi

GPU: RTX 2080Ti

RAM: 64GB (3000Mhz)

 

From the above I can see two potential problems.

First, single core performance could be bad on the 1920X which would explain the bottleneck. This, however, is unlikely as I have seen the game running much better on and i7 6700 HQ.

Second, memory latency could explain everything. Is it possible that Unraid somehow introduces a lot of memory latency to the VM? In case it is, how do I fix it?

 

Does anyone have an explanation or even better a fix for my problem?

 

Best,

Michael

 

 

 

Link to comment
13 hours ago, MichaelBernasconi said:

Threadripper 1920X

Make sure you optimize your VM especially for first gen TR4. Try not to use cores from different dies for example. You can find a couple tips in the forums how to improve the performance for gaming. However if this helps or not, the game in the current state isn't relly well optimized. I saw some streams with really beefy hardware and it runs like in your case in low 20fps ranges.

Link to comment

Thank you for the quick responses! 

 

9 hours ago, bastl said:

Make sure you optimize your VM especially for first gen TR4. Try not to use cores from different dies for example. You can find a couple tips in the forums how to improve the performance for gaming. However if this helps or not, the game in the current state isn't relly well optimized. I saw some streams with really beefy hardware and it runs like in your case in low 20fps ranges.

I am aware that using cores from different dies is bad but this should be a problem for the 1920X, right? It has only a single die as far as I can see.

 

7 hours ago, JorgeB said:

With AMD CPUs, FS2020 basically only performs well on Zen2, any Zen/Zen+ will be on the slow side, see for example here:

https://www.pcgameshardware.de/Microsoft-Flight-Simulator-Spiel-15259/Specials/FS-2020-Benchmark-Test-Review-1356467/2/

Interesting. Is there any hope that this problem will be fixed in the future or is it an inherent problem with Zen/Zen+?

 

Link to comment
2 hours ago, MichaelBernasconi said:

Thank you for the quick responses! 

 

I am aware that using cores from different dies is bad but this should be a problem for the 1920X, right? It has only a single die as far as I can see.

 

Interesting. Is there any hope that this problem will be fixed in the future or is it an inherent problem with Zen/Zen+?

 

 

The 1920X contains mutiple chiplets and mutiple CCX's. The most cores you can have in a CCX is 4, however it is not clear if the 1920X has 4 x 3CCX or 3 x 4 CCX. You may be able to tell from Ryzen master in Windows. Once you start to move threads between the CCX's you introduce a lot of latency and take a signficant performance hit.

 

As a first generation Ryzen SKU it is significantly eclipsed by second and third gen. The game mode on the 19XX series switched from UMA to NUMA mode and emulated a 8 core part to improve performance. If unraid is running it as the 12core part, latency will reduce performance etc.

 

The main thing you can try is minimising detail rather than resolution, that may get a more playable frame rate, though as a simunlator, 30FPS should be sufficient.

 

 

 

 

 

Link to comment

That is interesting. I followed the instructions in this video and got the image you can see at the bottom. Since there is only a single package I assumed that there is only a single die. Looking at the topology again I assume there are 3 cores per CCX sharing a single L3 cache. Is that correct? 

Just out of curiosity. Could you explain the difference between a CCX and a package? 

topology.png

Link to comment
12 hours ago, MichaelBernasconi said:

nteresting. Is there any hope that this problem will be fixed in the future or is it an inherent problem with Zen/Zen+?

For some time Intel has always been faster for gaming, Ryzen 3000 is close, hopefully Ryzen 4000 will be on par or even faster, while there could be further updates to FS to help with performance I won't expect to ever be great with 1st and 2dn gen Ryzen based CPUs.

Link to comment
9 hours ago, MichaelBernasconi said:

That is interesting. I followed the instructions in this video and got the image you can see at the bottom. Since there is only a single package I assumed that there is only a single die. Looking at the topology again I assume there are 3 cores per CCX sharing a single L3 cache. Is that correct? 

Just out of curiosity. Could you explain the difference between a CCX and a package? 

topology.png

 

For the 19xx Threadripper

The CCX is the core building block, each of these has 4 CPU cores which share a block level 3 cache. (3cores on the 1920X as one is disabled)

Two CCX form a die which also contains a dual channel memory controller and PCI-E interface etc.

Two dies are mounted in the package, the physical chip you installed (there are actually 4 physical dies, however 2 of these are dummys)

 

Each CCX comminicates with the other CCX's via infinity fabric, a high speed bus regardless of whether it is on the same die or a different die.

This can cause latency when threads hop between cores accross the CCX's or data is in the cache on the wrong CCX. Additional latency comes when the CCX needs to access memory or devices on a different die which is what the video trys to avoid.

 

Your image doesn't show the NUMA nodes as you have memory interleaving enabled (UMA) which increases the memory bandwidth at the expense of latency and hides the NUMA nodes from the OS. If you set memory interleaving to 'channel' in the BIOS and have the dimms in the correct configuration it should then switch to numa mode.

 

There is no 'fix' for this, the latency is designed into the chip, which is optimised for production rather than gaming.

However if you get the numa nodes correct you should see performance similar to a Ryzen 2600 with 6 cores allocated.

 

Edited by Decto
Link to comment

FS2020 is using DX11 so what you are seeing with your cores is mostly accurate. 

 

It took a bit of stuffing around but I'm running it on a VM with 4c/8t of a 3700x isolated and passed through and am seeing exactly the same performance through the VM as baremetal. Averaging 40fps in the air with most settings on Ultra and a 1660Ti. Performance takes a fair performance hit on the ground but this is expected. i440 performs slightly better for me than Q35 however does introduce slight stuttering at times. Using hugepages for RAM also seems to help and the more the better (more than 16gb).

 

This helped in my case.

https://www.reddit.com/r/MicrosoftFlightSim/comments/ig1mwz/running_msfs2020_under_qemu_utilizes_cpu_poorly/

 

Happy to share my XML if you want to have a look but there's nothing too special about it.

Link to comment
  • 2 years later...

Hey ELP1,

 

I'm currently running a Ryzen 5950X and a RTX 3070Ti on my Unraid server. I have 8 full cores (16 threads) and the 3070Ti passed through to my gaming VM (Windows 11). FS2020 runs fine for me. I have not compared against bare metal performance but I'm not noticing any lag that is bothering me.

 

A few things to check in case you have performance issues.

1. Make sure the vdisk that you install FS2020 on is located on an SSD. This made a big difference for me.

2. Make sure you allocate enough RAM for the VM. I'm giving it 16GB.

3. In case your CPU has hyper threading (which it probably does) make sure that you are passing both threads that belong to the same core to the VM.

 

I hope these tips help.

 

Best,

Michael

Link to comment

Hello Michael,

thank you for your feedback! I have Intel i5 10400. It is 6 cores processor. 4 cores are isolated and I use for my VM all 4 isolated cores + 1 shared core. So in total it is 5 cores + threads. But the issue is strange... In main menu it is working normally everything is very nice fluid. In hangar view I even hear that fans spin up and computer is noticeable louder (like normally under the load). Even my GPU and CPU utilization is high. However once I start the game I see usage CPU or GPU only 50% and computer is silent and game works but that performance is not very good. It is relatively playable but not so much fun. FPS is something like approx. 20 - 30 FPS. I have GPU AMD 6650XT passthrough, also 16GB of ram and I use Q35 machine. But every other game like Metro Exodus / Tomb Raider is working flawlessly. Also any change in settings does not influence performance. I can set everything to "LOW" even resolution, but performance is more or less still the same. 

 

I assume it is something similar like here described on Proxmox: https://forum.level1techs.com/t/windows-gaming-vm-on-proxmox-performance-optimization-in-msfs-2020/187683 but I have no idea what to try in Unraid. I am just let say advanced user of Unraid :-). 

Edited by ELP1
Link to comment
  • 9 months later...

I have 5950x grka 2080 64gb ram - vm 32GB nvme samsung 970 pro 1tb I get between 25-40 fps Moreover, the CPU bottleneck although it is only 40% loaded and graka is also about the same I added unraid to the config:kernel /bzimage append vfio_iommu_type1.allow_unsafe_interrupts=1 pcie_acs_override=downstream,multifunction isolcpus=10-15,26-31 initrd=/bzroot kvm-amd.avic=1 kvm-amd.npt=1 iommu=pt avic=1 acpi_enforce_resources=lax I don’t know how to get more out of my system...... it works better on bare metal

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.