Limited by main thread.....help

Hello I’ve been since the game came out, getting I think like everyone else the problem of limited by main thread.
i have an i7 10700k and a rtx 3080 evga ultra
by limiting and stressing a single CPU core, it causes my GPU many times not to work at 100% of its use alternating between 55% or less until few times more than 95%

and I say that my GPU does not work to the maximum because many times it offers 40 FPS and it is working only at 50% load

I have to say that it only happens to me in this game, and not in any other, ruling out any type of problem on my computer

Also since the game came out it has been improving something, but not enough to take advantage of the GPU

we already have many updates and it seems

I wanted to know if it is planned to fix this, or if this happens to everyone

Thank you

how much memory ? and what speed is it ?
do you have xmp enabled on ram ?
any other OC setting running ?

32 gb de RAM, 3200 mhz

it’s a limitation in the way complex sims work. You’re limited by the single threaded performancd of your CPU (the main thread). The CPU prepares the frames for the GPU. If the GPU is more than capable of processing those frames the CPU sends its way, then it will be underutilized.

Nothing wrong with your system, it’s just the way it works.

Most other games are much easier on the CPU, and will be GPU limited (as in, the CPU can throw more frames at the GPU than the GPU can handle). It’s just a different workload.

If you want to increase GPU utilization you can increase graphics settings, or run at a higher resolution.
Or of course get a CPU with better single threaded performance, but I doubt you’ll get too much of an upgrade with current available hardware. A 5000 series Ryzen processor will be a bit faster, but don’t expect miracles.

1 Like

At first it was strange to see my CPU working hard but my GPU idling. Then I realized that MSFS is STREAMING more than DRAWING. The CPU (main thread) does the streaming work, whereas obviously the GPU does the drawing. If I tweak my settings to lower terrain tasks, I can get my FPS up to 40-50 consistently.




I turned my 4k monitor to 1440 so I could run native at 1440. I’m using FAST vsync in the NCP.
1080TI, i7-7700 32GB RAM.

I also turned off ALL online functions as this is main thread work.

Hope this helps.

4 Likes

I have the same CPU the F version but its paired with an RTX2060super and my GPU is around 80-99% usage often which is obvious as the 10700k is strong enough to handle anything far more powerful than a 2060super.
You need to throw more workload to the 3080.Maybe get a 4k display if you don’t have one.
I am running my 2060super on a 3440x1440 monitor. If I go down to 1080p I get the limited by mainthread message with higher fps.

If I remember correctly (I could be wrong):

I read on another Topic on this Forum that :

The CPU gets the graphics
Sends it to the GPU to get rasterized
GPU then sends it back to the CPU
CPU sends the image to the Display.

This one main thread is busy.

My config is 4k ultra

Then you have other problems on your end.
Maybe turn off all that multiplayer traffic stuff if you have it on.

I get almost always over 50 60 fps, but it is not something continuous, the GPU should work between 90 100% all the time, and even though it is most of the time, they should improve a lot in this aspect

It is not necessary that you explain to me the operation of a CPU GPU, I am saying that the management of these in the simulator is rubbish… thank you!!

or maybe the issue is playing at 4k and the cpu can’t cope at that res.
Maybe dx12 will make a difference.

the CPU can execute this without problems, the problem is the load that the cpu exerts on a single core, instead of dividing the workload between all the cores, my computer does not suffer any problem to execute 4k 60fps

i have a rtx 3080 evga ultra
i710700k
32gb ram to 3200
a good corsair refrigeration

the GPU has to reach the maximum workload always since I have no frame lock or vsync activated

It is useless to give it more load by raising the resolution, since the load should always be above 95 100%

my GPU ranges from 60, 65, 99%

AND MY PROCESSOR does not exceed 35% but one of its cores due to the sim stresses 100% a single core thread

I have faith that dx12 will fix this

1 Like

That’s the thing it should and will only run at 100% or near if the cpu can send enough data for the gpu to draw. If its waiting for the cpu then the gpu will have less load…

upping the resolution scaling in sim reduces the mainthread load for me but then I get lower fps.

Anyway guess its wait and see what dx12 does.

If you have low GPU usage, you have a CPU bottleneck.

We hope DirectX 12 will improve things, but the developers’ comments about it were not promising.

Eventually they will fix it.

In the meantime turn down the things stressing the main thread. In particular LOD and AI traffic can be reduced.

You should unplug your monitor cable from your CPU mobo and plug it into the GPU output. The GPU should be sending video frames to your monitor, not the CPU. Using the GPU inside the CPU mobo limits the graphics significantly.

1 Like

It is plugged into the GPU.

I thought that was a strange statement: “CPU sends the image to the display”.

It doesn’t sound logical.

But if you think about the main thread policy, if the GPU can output directly,
there could be contention or fighting with all apps trying to get output sent
to the display.

I don’t have any idea of how this works.

CPU handles draw calls, basically hands out tasks to the GPU.

1 Like

I don’t mean to be rude about this but I absolutely hate when people cry “divide the workload between the cores!1!!” when they know nothing about the topic. The sim is already multi-threaded. Certain processes like terrain, sound, etc are on separate cores, this was confirmed by the developers themselves. The problem it’s very difficult to run the same process on multiple cores with them all working on it together at the same time. Different stuff is easy, because there’s no race conditions between the threads.

Let’s say you have 2 people tasked with working through a list of formulas to get to a conclusion, where the conclusion is the sum of the answers to all the formulas. The catch, is the formulas involve the answer from the previous formula. If you have one person (thread) working on it, they work through and once they finish them all, they spit out the final conclusion for the task. Now what happens when you get two people working on it? If they both just start working at it, they’re both going to be doing the exact same thing. Thats not any faster. Lets try splitting it up, guy 1 takes the top half, guy 2 takes the bottom. Well, now guy 2 cant even begin to start working because the first formula on his list requires the answer of the last formula on guy 1’s list. Hes waiting on guy 1 to finish, and yet again, its no faster.

It is totally possible to get around this issue, however even with this simplistic example its, 1000x more work than it is to write “multithread it now!1!!”. Theres no one-size-fits-all implementation of multi-threading that you can just stick into your applications. Plus, it gets exponentially more complex to implement based on how many threads you are going to be using, PLUS the complexity of the code you want to multi-thread. Furthermore, most programming languages dont even support multi-threading. cough JavaScript cough cough You need to do it externally.

For the foreseeable future, raw brute processing power on each individual core will reign king for realtime framerate sensitive applications. Hopefully DX12 can bring some improvements, but I wouldn’t hold my breath thinking its a silver bullet for all our performance issues.

3 Likes