It is expected that 2024 will deliver improved multithread capability. But at the time of writing it is still 4 months away… and it feels like 40 years. So i delved into some testing, just for kicks.
I run a modest setup with the following specs:
Ryzen 7 5700G
Rtx 2060 super
32gb Ram 3200 Dual channel
running just one 39" monitor at 1920x1080
I am cpu limited, and plagued by the “1 thread maxed out, all others idling” syndrome. Disabling virtualization does help, but i felt like there was still room for improvement.
I established the following baseline to achieve as repeatable a pattern as is possible with msfs.
Set tlod higher than usual to force a low fps condition.
Load one of the fps-heavy models at one of the fps-heavy airports. I chose the stock A310 and JFK.
All traffic off, multiplayer off, Clear skies, sun at 17:00hs
Spawn at the runway, let the sim settle for a few minutes and then rotate the view 360º non stop. And while doing so take note of the fps count.
Exit, and repeat three times.
This produced a mean value of 18-22 fps as the camera goes through every 360º cycle. Average cpu usage (while camera rotates) 40-50% and it boosts to 4.3ghz
A this point i disabled half of the cpu cores and the logic threads. Leaving only 4 physical threads available. Then repeat the test as accurately as humanly possible.
Mean result is now 23-26 fps
Cpu usage while rotating goes to 100% and it boosts to 4.45 ghz
I also ran a memtest and memory bandwith shows a 15% increase with 4 cores (no other changes). The increase in performance is enough to merit some attention. I am tempted to leave it like that, although it comes with a few caveats:
you cant suspend your computer to the S3 state anymore, and this is something that i do a lot. So, pretty much a show stopper for me.
Since msfs only uses about 10gb of ram, having free ram and idling cores is a delight to run things in the background. Chrome, youtube, socials, whatever. With the sim runnning, now this clearly takes a huge hit.
Thats all friends. Just sharing an interesting find. One more tool in the toolbox to milk out every single last drop of performance.
This is what really improved performance in my opinion. At least it matches with the results I have seen over the years with different game versions, in particular in that situation you tested (camera rotation). The higher the amount of cached data is, the faster data is cached and the earlier that task is done the faster game will be able to access that data later on, which is indeed the case of the tested scenario (objects not being visible that need to be rendered).
Every SU release that used that approach always produced the best results. Releases which were focused on memory saving always behave worse, as threads need to dedicate a part of their time to update cached data more frequently instead of doing other things.
In your test less cores were active which allowed them to work at higher clock while CPU is not thermally limited and stays below its max design power. That allowed them to cache data faster (that´s why memory increased). This is normal if you disable cores and it helps, sure, but you reduce the capacity to handle multiple tasks which are running at the same time on your system (other things which are not MSFS), which is the main purpose of multicore CPUs. Having more cores is not always better. It just depends on your expected use case.
My compliments on running a standardized test. It’s hard to limit ALL the variables, but you put some effort into it, and that makes your result more valid.
May I ask why you use the S3 Suspend mode so much? I’ve had quite a few issues with Sleep Mode, especially with USB devices not waking properly.
I understand it saves power. My computer has three states: 1) Logged in 2) Locked, with the monitors OFF, and 3) OFF. With today’s fast boot drives it’s not a big deal to start from power off condition, and a computer in idle state (locked or logged off) isn’t really using that much power.
i’ll be the first to recognize that its a bit of an ocd thing
I like my fans completely off, not idling, stopped. And suspending to ram really goes with my lifestyle i hardly ever turn my computer off. I just get up and leave, period. When I come back 6 hours later I just press a button and bam… all my stuff is just how i left it. I dont know… it just works for me.
Sounds good. I’m glad it doesn’t give you problems. Sleep Mode definitely has value. It’s been a bit of a headache for me that I don’t want to deal with.
it would appear that you were spot on. I resorted to tuning up my ram speed. I have a couple of those gamer sticks and i never bothered to look into their settings, i just tossed them in there. Tinkering here and there I achieved an increase in bandwith along the lines of what i was getting with only 4 cores, and now the sim is showing a similar increase in fps as i got in my experiment. Apparently (at least with amd) MSFS and memory bandwith = big deal.
Another discovery. The sim runs its main thread on core 0, which apparently is also the core on which windows runs “things” so its not ideal. So… task manager >> set affinity >> untick cores 0 and 1 and now my main thread runs on another core and that also gave me a small boost.
So… good things in the quest for running the sim on modest hardware.
This is really interesting! I think I see how it works…
I notice my 5800X3D is also often not reaching full boost on all-core usage, but it’s not temperature limited – it seems to be limiting on the EDC (total current).
Disabling some cores as you’re doing would reduce the total current at peak usage (fewer cores lit up) so the EDC headroom would be higher, allowing the active cores to run at full boost speed. The loss in parallelism for the bits that worked all-core before is not significant because you have idle time waiting for the main thread.
End result: the seemingly paradoxical higher FPS with fewer cores running!