In fact this is the point, as shown in the video, it seems that MSFS is not able to fully exploit all the cores of the CPU. ![]()
And you’re not reading; the UPPER limit on FPS is the ‘main thread’ (single core performance). you can have 1000 cores, and it’ll never go higher than that upper limit.
The sim WILL use all cores it has available to spread out the rest of the workload. Having more cores will make sure your FPS doesn’t go DOWN when you fly into heavy photogrammetry. After a certain point, adding more cores won’t make a difference. It’s simply the nature of the beast.
Games / sims are NOT workloads suited to an a-synchronous approach. All calculations have to be done, before a frame gets sent to the GPU. (can’t send a frame to the CPU if the aerodynamics haven’t been calculated yet).
This is why we’re saying the guy in the video is not showing key information; 1% and 0.1% low FPS, and he picked a scenario that has the least load on the CPU (sitting still on a runway in a 172).
But in fact we are saying the exact same thing, that is, you can have all the cores you want but MSFS is not able to use them all to the fullest. ![]()
This means that you can also install an RTX 4090, 5090, 6090 … but the FPS will increase less than you expect.
So would you estimate it’s utilising as many as 8 from 12 threads here ?
Exactly. All data going in and out of the CPU goes through the main core. It’s the one that communicates with the other threads internally, coordinates workloads, and talks to the rest of the system. All I/O operations go through that single thread. Doesn’t matter how many cores the CPU has. There’s only so much horsepower in that single (main) thread and it’s the limiting factor. The faster / more capable that main thread is, the better the sim runs.
EDIT: Multi-core usage has improved significantly since launch, and even moreso since DX12 in SU10.
As you can see it’s utilizing all 8 cores/16 threads. I think you could get away with 6C/12T on that load indeed. 6C/12T is currently the sweet spot for gaming/simming I think. 8C/16T opens up a bit more futureproofing.
As far as the basic premise of the question: does MSFS use all CPU cores, the answer is that yes, it does.
I think for some folks that seems to expand into a very different question, which is, can it load up every core to 100%. The answer to that is very sim load dependent. (As an aside, background tasks are not really germane to this discussion, as background tasks don’t really get “loaded up” the more a game is doing; if the game needs something it’s going to syscalls which will end up in the kernel scheduler or I/O event loop, and none of that is background tasks)
Games in general, and especially simulators, don’t really have the capacity to spread the load equally across all cores. In fact, there are relatively few compute workloads in general that can do that, really only stuff that has no cross-thread data dependencies at all, like chunking up numerical data and doing stuff like Spark or other dependency-less crunching. The reason being is that so much in a simulation depends on the results of the previous part of the simulation (this is just a general idea, I’m making no specific claims about the real architecture):
- Weather needs the weather and scenery geometry data first
- Air sim needs the weather sim first
- Airplane sim needs the air sim to be done
- Collision sim needs the airplane sim to be done
- Airplane position needs the collision system to be done
- Camera system needs the airplane position to be done
- Rendering system needs the camera sim to be done
The naive application of parallelism here means that you take each one of those tasks and throw them on a different thread. Except, that doesn’t get it done faster. Because each thing is still waiting for the previous to finish, even if it’s sitting around on some other thread (which is probably scheduled by the kernel onto some other core; an earlier poster seemed to be thinking task manager was showing threads or something like that, but that’s not right, threads get scheduled onto cores by the kernel).
So, in general, you offload things that you absolutely know you can do in parallel that are OK to have either data that’s a frame or two stale, or don’t really play into that. Like, for example, scenery loading. Scenery is a bunch of I/O, and you can say, I know where the plane is going, I can pre-emptively chunk up my I/O calls to the disk and use X number of threads to grab that data in parallel and load it up. But scenery loading is spikey in workload, not constant, so that won’t cause 100% load across all threads all the time. But there are also not infinite options of things to apply this pattern to in a game or simulation.
So, the answer is yes, it will use as many cores as it can, for things that it can (and the team is always looking for novel ways to increase the count of things that it can). The rest is necessarily serial in nature.
Agreed. Comment on test methodology is spot-on.
IMO for a test like this, not providing GPU utilization makes it impossible to draw conclusions. FPS is the easiest to digest, but IMO the least important statistic.
A better test RESULT of incrementally dropping CPU active cores is GPU utilization not FPS. FPS is not even a required figure when testing “does MSFS take advantage of more CPU cores”. GPU utilization answers that question.
My anecdotal evidence of using the sim for two years is a clear conclusion: “MSFS does not scale well with more CPU cores”. Single core performance remains paramount.
With 12900k, all eight P cores locked at 5.2ghz and rtx 3090 I rarely see greater than 50% GPU utilization. This is without FPS cap and every single graphics option maxed out @ 3440x1440 resolution (monitor) and render resolution at 120%. DX 11 or 12 has little impact. 40-50% GPU utilization yields around 30fps.
If GPU was at or near 100% then I’d have some evidence that MSFS was effectively using CPU resources. Even if FPS remained at 30.
Correct, you’ve bought a CPU more suited for productivity workloads that use asymmetric multithreading. Like stated above, 6C/12T is probably the sweet spot right now.
While you’re technically correct (the best kind of correct), the ‘2 threads per core’ terminology is widely used by CPU manufacturers. Which is why it’s being used like that here;
intel;
AMD;
it should probably be called ‘8 cores, 16 logical processors’ instead, but here we are.
Good explanation of the MSFS multithreading otherwise ![]()
the main-thread-limitation is only the directx stuff..
Earlier today I sampled MSFS for about 10 minutes during a flight (no takeoffs or landings). During this time, MSFS used 47 threads. The busiest thread (main thread?) was busy opening, reading and closing files. The Rolling Cache was the busiest file which is to be expected. The second busiest thread was reading the Windows Registry for network parameters. The third busiest thread was the TCP thread reading and sending files. The Main Thread and GPU processing times were about equal.
Did MSFS use all the cores? Actually Windows is in charge of scheduling processing to the cores. I did not look at which threads were running on which cores. Windows is pretty good at managing its resources.
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.

