Reducing MSFS **CPU** load (Limited by CPU)

The information on the internet (including in these forums) seems to be a mess for the (presumably) millions of people who have their MSFS framerate “limited by CPU”.

Most people producing “performance guides” seem to be gamers who are relying on their past experience of tweaking games that are only ever limited by the GPU with the assumption important settings include things like screen resolution or AA settings.

Asobo/MSFS doesn’t help as the settings documentation makes no mention whether a given setting affects the CPU or the GPU, and those settings are silently mixed together.

A real performance guide should start

  • use the in-game FPS tool to tell you whether you are limited by CPU or CPU

  • if it’s “CPU” - change these settings across the whole sim and the PC

  • if it’s “GPU” - change these settings…

There’s about x1000 more experience for gamers (and game devs like Asobo) tweaking graphics code/settings for a GPU limited game so it’s no surprise the vast majority of guides MSFS either concentrate only on the visual settings or mix all settings together with no real clue to how they’re actually affecting the PC.

I’m pretty sure it’s the CPU-related settings that actually affect most people so it’s problematic the information about these is EXTREMELY difficult to find anywhere.

For a starter, here’s some quick CPU-related MSFS performance notes:

  • Use the in-game Developer Settings - Debug -Show FPS tool to tell you whether it’s the CPU (aka “Main Thread”) or the GPU that’s limiting your frame rate.

  • Your objective is to adjust settings so the game is SLIGHTLY “limited by GPU”. Max framerate is achieved if the CPU and GPU are taking the same time to process each frame, BUT the framerate is smoother if it’s the GPU that’s limiting the framerate as the CPU load is burstier and if that has a little headroom (with the GPU limiting the framerate) then you see fewer stutters.

  • Disabling AI traffic reduces the CPU load (this is not in the ‘Graphics’ settings)

  • Reducing Objects Level of Detail (graphics settings) reduces CPU

  • Reducing Terrain Level of Detail (graphics settings) reduces CPU

Hopefully others can contribute useful CPU-reducing into for MSFS, these points are just the main ones I remember.

16 Likes

It’s always a balancing act.

CPU loaders: TLOD, OLOD, AI Traffic, all other traffic (vehicles, airport, workers ships etc), clouds, shadows

Generally I (5950+3090) for airliners use with FSLTL and GSX etc at busy airports to keep me out of CPU limitation I set the following -

Have TLOD ->100, OLOD->100, FSLTL on IFR 55, VFR 1, Static limit 10, In game AI traffic all dialed back to 5-10%, and have dialed most shadows and textures back a bit too. Including in installers (where available eg Inibuilds)
I can either choose to have most graphics settings on Ultra with no AI, or accommodate FSLTL AI with graphics settings dialed back and I prefer the latter. The sim still looks great, keep this in mind.
I also for smoothness have VSYNC ON at 33% lock at 120Hz, so targeting 40FPS.
I run at 4K, and leave clouds on Ultra too.(visually important)

In the end there is no single answer and it depends on what you use the sim for and what you want to add to it CPU (mainthread) load wise (eg traffic) and how you manage the CPU mainthread loading to stop FPS dipping too much when you need it the most.

Agree though, there should be a simple tool in game to make suggestions for users.

3 Likes

This guide is fantastic for many of the requirements you mentioned. It explains that you can be CPU or GPU limited and tells you how much each setting affects performance in both scenarios, along with pictures illustrating the graphical differences.

3 Likes

I agree it’s a good guide, best available probably, but it does illustrate the problem I’m describing. That guide suggests you look at Anti Aliasing, then Render Scaling, then Nvidea DLSS upscaling, etc etc all of which is irrelevant if you’re CPU limited. There are a couple of graphics settings (LOD settings) that do affect the CPU but that’s hidden in the mostly graphics-oriented focus. I think the analysis is limited to the graphics settings, so the fact AI traffic has a big impact on the CPU doesn’t get mentioned.

1 Like

It doesn’t, it is simply listing all of the settings in the order that they appear in the graphics tab. It isn’t telling you to set them in that order, it is merely telling you what the effects of those settings are. It is up to you to decide what order you set them in or which you prioritize.

Not necessarily irrelevant, if you’re CPU limited and are happy with your current FPS you have headroom to increase those GPU heavy settings!

Correct, and airport workers, airport vehicles, road traffic, ship traffic, yacht traffic etc. all add up to a noticeable amount but aren’t included. The anaylsis is limited to ‘Graphics’ settings only, no other settings outside of the ‘Graphics’ tab are included

2 Likes

I noted this guide suggests no shadows impact on CPU load, but in a detailed environment of a busy airport with lots of AI traffic I’d say they do. This is the trouble with many guides. There’s really a guide applicable to every scenario and permutation of how someone uses the sim.
To optimise I generally spawn in to my wost case scenarion eg. Ini’s EGLL with FSLTL set to where I’m happy with traffic volume, turn rain on and adjust to get usable FPS (say min of 30).
Adjusting for worst case also means the added bonus of the sim running better everywhere else in just about every aircraft/scenario too.

1 Like

I do the same! I first set my CPU load by loading into EGLC and tweaking settings (especially LoDs), then I raise the GPU settings to match (if I can get them to match, usually I’m mainthread limited with 70-80% GPU).

Then I set an FPS limiter slightly below my max, so if I was getting 48FPS mainthread limited in the above situation, I’d set the FPS limiter to 45FPS so there is some headroom to avoid stutters!

3 Likes

Which is the best way to optimise. I also switch places like INI’s EGLL over to SD textures too as it too make a big CPU diffrence even though it shouldn’t according to some guides.
Everything still looks great even on TLOD/OLOD’s 100 and some graphics settings on Med or High, and extra ‘traffic’ (roads, ships, workers etc) set to <10% but clouds and 4K res I leave alone.

I think the only thing I miss is seeing distance at night at altitude. With LOD on 100, some lit up scenery disappears into a blur quicker than it maybe should. I guess same goes for approaches, so you sometimes don’t see the runway very well from 20+ miles out, but who cares in an airliner.

I recently lost all my settings and was forced to do a re-tweak from memory and adjusted most things apart from some shadows and texture qualities down. I had found EGLL in particular to be a bit low FPS. After reducing shadows and textures down a bit, FPS is back where it should be.
I do think some people would baulk at my lowish settings (for my hardware), but to me I still have amazing graphics, but not many stutters or low FPS issues.
If I ditched FSLTL I could easily run on TLOD 200+ OLOD 200 and most things on high, but then I wouldn’t have lovely AI aircarft in busy airports.

2 Likes

Main performance hit is TLOD without any doubts. Above TLOD 150 it starts to kill permormance indeed, even on a high-end system. I have seen the same result over the years (first with 9900ks + 3080Ti and now with 12900ks + 4090). If you are flying low over big cities then TLOD 200 can easily take you to the 30-40 FPS range and 20-30 FPS while on ground at an international airport. Once you are airborne figures improve anyway (most likely because collissions with terrain and objects are deactivated).

AI traffic is the other killer. By activating just a 10% offline traffic you lose 10 fps, no matter if there are 300 AIs or just 50 AIs around you. Performance problem is not the generic 3D models but just the handling of AI themselves, which is driven by main thread.

Anything else appart from those two settings is basically not really relevant. Anyway the main thread is currently hammered under AAU2. CPU usage has lots of peaks every few ms and instability. Panning camera is terrible now. Performance figures were not that bad with SU12 and CPU usage was much better and it was steady. Panning camera was very smooth once whole scene had been cached. You could reach 40 FPS on ground at intl airports near cities even with TLOD 200 and now you are basically in the 30s FPS range with severe hitching everytime and a terrible camera panning behaviour.

Cheers

2 Likes

how do you even get GPU limited with all the powerful GPUs out there?
Unless in some extreme scenario, surely this game will always be limited by CPU mainthread, no?

i have a Intel Core 12700K and MSI Suprim X 3080TI (granted it outperforms the 3090). 120Hz monitor, fast vsync locked at 40fps in NvCPL.
And even with that setup (which should be relatively balanced), the CPU mainthread frametime is pretty much double of the GPU one, even at 4K 150TLOD & OLOD and most settings on HIGH+. Not even flying in big cities. 95% of my flying is north europe (ENGM, ENBR, ENVA, ESSA, EKCH++).

1 Like

If you crank up the pixel count with a high enough render scale (supersampling), you should still be able to bring any current GPU to its knees. :smiley: (But it will be diminishing returns in terms of picture quality.)

2 Likes

sure, but that is definitely not needed at 4K native.

1 Like

I’ve been tweaking my system just as all of you have, and what burns me is that I seem to make changes that make it run smoother, then one day out of the blue it goes back to stuttering. It doesn’t have to be an SU or a new NVidia driver that does it - it just happens. So of course I start tweaking more to try and improve it and wait for the next hiccup.

I tend to spend more time on settings within MSFS and really don’t make a lot of changes in the NVCP. Over time it just seems that those changes don’t consistently buy me much. But admittedly, as new drivers come out, I may be missing an opportunity there as well.

1 Like

^This - of course you can get the GPU pegged on any system, but the little understood default behaviour of MSFS is to hammer the CPU. FWIW on my system with 3 x 4K screens I thought I was being clever by rendering at 1920x1080 on the side screens and using DLSS to upscale that back up to 4K. But it turns out I was limited by CPU anyway and I might as well render the side screens at native 4K (given the other various graphics settings I’m using). That’s with a 12900K CPU and a 3090 GPU.

There’s a naive hope amongst programmers that if they could just take some function of their software and move that onto a separate thread then their multi-core dreams will be fulfilled, but that rarely works (although it’s a good thing to do) and the only real solution is to find the most constrained processing loop and restructure that to use mulitple threads/cores (which few game developers would be capable of). It’s notable that Asobo’s ideas for 2024 are to move some ancilliary function of MSFS to another thread and given that I’d expect continued CPU contraint with MSFS 2024.

1 Like

Cue a “Why am I getting stutters with FS2024 on my 4090.” thread any month now.:smile:
Tbh, with FS2024 I’m more concerned about bandwidth with more content being streamed and thinner clients & smaller install sizes being talked about.

They’re actually moving the Physics and Aerodynamics calculation away from the mainthread, so hardly ancillary! It should result in quite a performance increase :smiley:

6 Likes

Nothing except scenery should be running on main thread indeed. AI traffic should be also pushed out of main thread to a separate thread as it´s one of the current bottlenecks.

Cheers

1 Like

Keep in mind; the main thread is the thread that syncs back up all the tasks offloaded to other cores. So if one of those other processes is slow, the main thread will be waiting for that one to complete.

2 Likes

That won´t most likely happen as one of the reasons to split workload in several threads is to reduce both the workload of main thread and also the workload of the newly created supporting threads, as those new threads will run adhoc tasks only in parallel with main thread and additionally can run on separate CPU cores, which is the real advantage. See how the supporting threads work now in current implementation for instance, being always faster than the main one even if everything is bascially single core now (windows manages cores not game). However main thread is always so slow because everything relevant for simulation runs on it (scenery, weather, avionics, traffic, physics and sound). Any of those tasks can add lag to it, making the whole performance terrible as in fact those tasks are the ones having to wait for the slower one to finish in order to complete the current loop because everything is queued in a superlong list that needs to be processed every time code runs a loop.

What you could see in case of delays in other threads in the new implementation are position of AI planes jumping between frames in case you have like 1000AIs running for instance (or any relevant load for that thread whatever it is), but in theory if scenery tasks run fine on a dedicated thread, you won´t see any FPS hit caused by any other threads provided that GPU+CPU can hold the required scenery and graphical load, which is one of the heaviest tasks, and the workload on those other threads is reasonable as well. So there may be eventual sync issues but not performance degradations I would say. Sync issues can be still solved anyway. Let´s see how they finally implement this. I don´t want to be too optimistic yet.

Cheers

I had actually already given up on that topic after fiddeling for hours. But now I’ll give it one more try.
I find it extremely difficult to get my system GPU limited permanently. Especially with PG nearby. I have everything GPU related set to Ultra, and unless I dial down the TLOD and OLOD down to 50 or lower I can’t get it done. Best is the plane switching between GPU and Main Thread Limited. Interestingly enough when dialing down or up the LODs the GPU timings tend to match the differing values.

Also played around with DX11 and 12 as well as DLSS and Frame Generation. Only thing that changed were the timings which can vary between 20 and 35ms.

Any ideas? It’s not really a hardship since the occasional stutters are bareable, but finally getting rid of them would still be nice considering the equipment I use …
(7950X3D and 4090)

Thanks

EDIT:
After some more testing with very low LOD and it turns out that even GPU Limited I still get the same occasional stutters. So basically it doesn’t seem to matter :man_shrugging: