Performance degradation during long flights isn’t really a “memory leak” but rather a combination of available hardware resources and non-optimized coding. Every flight in MSFS is essentially the same. As an aircraft flies or sits on the ground, MSFS CPU has to find all of the graphics data for objects and terrain needed by the GPU to create the frames displayed on the monitor. When a user specifies all ULTRA graphics settings, the CPU has to find and process A LOT of graphics details. As the CPU collects the graphics data, it has to go into real memory to be processed. Memory utilization skyrockets while it appears the CPU and GPU are both loafing around. When memory utilization is very high, the CPU cannot process all the graphics in memory fast enough to send graphics frames to the GPU because as the aircraft continues flying, more graphics data needs to be collected by the GPU. FPS slowly drops as memory fills up.
How can this be fixed?
One unsatisfactory (for me) workaround is to pause the flight for 10 to 20 minutes. This is usually enough time to clean out memory. FPS improve when the flight resumes.
MSFS is a very graphics intensive program. The GPU is key driving graphics to the monitor. It is important to drive the GPU usage as high as possible 90% to 100%. The CPU part of MSFS (“main thread”) is responsible for collecting from wherever it is all the graphics information needed by the GPU. If the GPU is at 100%, the CPU cannot send any more graphics information to the GPU so the CPU usage % is very low.
Limited by the “main thread” means that the CPU part of MSFS cannot collect and process the graphics information needed by the GPU fast enough. The GPU usage % is low and the CPU usage % might be low or high. If both CPU and GPU % are low, then why isn’t FPS higher and actually lower? This is caused by the CPU filling memory with graphics data. If somehow MSFS is reprogrammed to eliminate the “main thread” so that all CPU cores run at 100%, it will be sending a LOT of graphics to the GPU. When the GPU reaches 100%, the CPU cores will be have to throttle back.
Right now without hardware and software upgrades, there are two graphics tuning “knobs” available to the user. 1) Change the amount of graphics needed by the monitor. The amount of graphics needed for 4k monitors are significantly more than what 1080p needs. If the GPU is running at 100% for 4k, then 1080p should decrease GPU %. 2) Change the graphics settings. We all want the highest quality graphics so we set all the graphics to Ultra or use tweaks to go beyond ultra. The higher the graphics settings, the more graphics information that the CPU needs to collect and process. When the GPU waits for the CPU (main thread), FPS drops. Lowering graphics settings reduces the demand on the CPU and pushes the GPU % up. And FPS goes up. Tuning graphics parameters is challenging because there are so many and they all do not have the same impact. The goal in tuning is to slowly lower some, not all, parameters to move %usage from CPU to GPU, that is, limited by the GPU. This should provide the best quality graphics and the best FPS currently available.
The two best parameters to change are the LOD numbers. I used a tweak to boost my LOD numbers higher than the 200 max. Most of my flights were 15 to 20 minutes so I never had deteriorating performance. When I started flying long flights, my. FPS dropped below 10 FPS. Eventually I changed the LOD numbers to 80. I haven’t had any performance problems since then.