You mean context switching. But a modern quad core is not “hopping” that much… Threads are parked in a thread pool when not used. This thread pool is most effective, when you allocate one thread per core. As a result, there is only context switching in certain events, say Gauges on your dashboard get updated. But the rendering (scene drawing) is not so multi-multi threaded as you seem to think. In DX-11, the technology this simulator was built upon when development started, Microsoft required programmers to use only ONE thread for the rendering loop. This has changed in DX-12, MSFS took a lot of effort to integrate things, but MSFS basic architecture still has a very buzzy “main thread” running. You can see that in the actual performance report you get, if you switch on SDK, choose Options/Show FPS.
Have you looked at the number of active threads MSFS is using. (Placing call to Men in Black for a 2300 core CPU )
Actually I wasn’t even thinking of the rendering. Other than the “next” computation, there is really no need to share resources with the CPU. Drawing pretty pictures is done soo much better by the GPU.
I was really just thinking of all the calculations required to decide…
- where is car 1? Is it on the road? How far will it have moved when we have to redraw it?
- where is car 2? …
- where is boat 1? …
- let’s ask the server what airliners are in our area. Are any of them new? Lets start a new thread to manage its flight plan.
There is a lot of stuff going on, between frame draws. each of those threads need to be pulled from the pool and executed to figure out WHAT needs to be drawn, long before we worry about rendering anything. Just fire up the task manager performance graphs and start turn up traffic and boats and cars. It won’t be long before the GPU load starts to fall off and the CPU load starts banging its head(s) on the ceiling. “LIMITED BY MAIN THREAD” simply means the GPU has plenty of leisure time while it waits for the CPU to figure out what it should draw next. The best scenario would be for the CPU to be waiting for the GPU to finish drawing so it can send the next picture.
The amount of work the GPU needs to do is only based on the resolution of the picture. 2 million pixels is 2 million pixels. The CPU needs to be able to calculate what those pixels represent. don’t limit its time by making it figure out where the killer whale is.
Well I’ve not seen any directional intelligence in cars they seem to follow a base plane at random. That can be done easily with a controlled animation, in some way this AI traffic behaves is like a particle model. “Brownian movements” haha
Absolutely. Traffic is upload-intensive process. The CPU maintains the movements, the GPU has to render them. You can have 10.000 cars but when each car only has 20 triangles, you can put all that traffic in the same frame you put e.g. St Paul’s Cathedral. But your CPU is sweating ! It has to compute all these coordinate targets. These are simple models (look at it, very funny sometimes)
In the recent past, I’ve fiddled some things in VS2019 and both versions of DX, and I can assure you a GPU and a CPU must be closely orchestrated. The GPU organizes its own threads (and is massively parallel !) and the CPU delivers skeleton and texture data, which is “dressed” in the GPU shaders. Most work is done in the GPU. But pumping all that data into the GPU represents most work. As far as I know threading is not per scenery or per animated object. These animated objects are like “smart” particles handled by a particle shader, their direction and position are put in one buffer, all at once by a single thread. Cars in sight will be rendered, but the viewport itself is handled in the GPU not in the CPU. The CPU does not have to steer the cars, the GPU does that. All these thread handles you see in mem manager are no running threads, they are to be woken up when a semaphore is set, when the next load of car coordinate targets must be computed. In effect, ca 2296 of these 2300 threads are waiting for events. That means they are woken up by monitor processes.
Threads on the PC side are mainly allocated to inspect and update data queue content. There’s a LOT of that while you fly. The horizon will add new scenery that has to be loaded by the CPU at first. The faster you go and the higher you fly, the more CPU cycles you will need to keep up. If you have e.g. a normal harddisk, it’s no use to buy 3090/64GB hardware, because your hard disk drive will set a limit to performance. You’ll never have the performance of an SSD.
DX12 is coming…
All of this is true. It is also beyond the understanding and interest of most users.
My point in this is that reducing the amount of work required by the computer dealing with a bunch of stuff that you will never notice or even see in most cases doesn’t enhance the user experience. Reduce the load. Turn down or off stuff that doesn’t matter (to you) and find the sweet spot for your system. You CAN’T have it all. you will have to sacrifice something to get the smooth hi quality experience we all want.
You can’t have it all but I prefer to start somewhere up high
As of cars, when you’re flying at about 1000Ft, cars start to become small like pixels, you would not miss them. I like to fly scenery, and I often notice on approach it is much slower than after flying for a while inside the scenery itself. Once you arrived and start fly in circles, large parts of your surroundings maybe already loaded into the GPU. All it needs is a trigger.
I think some people have an unrealistic expectation of what they can expect out of MSFS. To reach 60 fps at all Ultra 4K is not unattainable to someone with top tier hardware. However, due to the complexity of the sim, maintaining that is not realistic. At least not on today’s hardware.
For me, it’s all about consistent, smooth experience. If I can maintain 30+ fps consistently, I’d be happy. Unfortunately, since WU3, I struggle to maintain 30 fps in any consistent manner regardless how low I set my settings. I miss the 45+ fps days at all ultra from launch. There were a lot of microstutters and really busy areas were performance black holes, but I never dipped below 30 fps. And it was lovely. I wish I could get that back.
The issue I see with that is that often you will end up with features that don’t matter left on, using resources that could allow turning up something you want without impacting performance. Starting with nothing and bringing in the stuff you want optimizes your performance.
I touch my settings very often. I run low line graphics here, so I need to tune it. When I fly e.g. Skerries, I set LOD and field of view optimal, the rest to medium. I fly up there, find a nice place, set everything to Ultra and put a drone… wait for a while (!) and then take a screenshot. After that, I put everything back to medium, start throttle back to the airport… and if it that is some big airport, I tune it again. I set grass, trees, lighting options and texture sampling all to low, before I land. When you move your airplane… you don’t need texture sampling, you can also do without anisotropic filters and all that stuff… when you move you need the Fps.
That is the importance of tuning to personal preferences. Since I installed the sim on release day. I have never even used the drone. I can count the number of times I used external view on one hand. When I fly VFR I am looking for landmarks. Couldn’t care less about cars, boats and animals. where I spent the majority of my career flying I may see 1 vehicle in two hours following a road.
I am far more interested in quality weather effects. They help challenge my navigational skills. Even in real life, the amount of time I spent looking at buildings does not justify super detailed parking lots or recognizable pubs. If a VFR route into a busy airport requires reporting over the cement plant, it is nice if the AI made it look like one but it isn’t critical to my flight.
If I am flying IFR then the approach lights are of much higher priority than the accuracy of Robinson’s Treehouse while on approach to John Wayne. (next door to Disneyland)
Great post !
Reading Comprehension – You used to have to get a reasonable score on the college entrance exams to get in.
Willis’ whole point is that this sim is just like all others in the past in terms of pushing the STATE OF THE ART computers to their limit. It is an exercise in frustration to start with all features on and at their highest, and then tune down until it works.
I agree with him on the approach of starting low – starting with a configuration you know will work well on your computer – then tune UP little by little, only turning on things that you can’t live without.
From what I’ve read on this forum, very few people can afford to – or are willing to – spend the kind of money it takes to buy a top end computer, monitor, flight control peripherals, etc. So don’t expect to run the sim at top end, either. Everybody doesn’t get a trophy in this game.
We all know the sim is young and going through growing pains. I’m 6’4" tall and grew about 3" over a period of 1 year. It was indeed painful, both physically and mentally. But there was nothing my parents could do other than buy me new clothes as needed and give me time to get through the growth spurt. That’s all we can do here, too.
What a fitting (excuse the pun) username, then.
Thanks for that.
Hopefully it helps some of the folks having stuttering, bad frame rates, and CTD.
I also think that is it a good post to remind people to be careful with the settings and putting too much stress on their systems.
MSFS is meant to be a long running project and so it is ok that some features (and planned features like f.e. raytracing) can or will bring down current generations of hardware. And yes, it is better to have a stable system instead of having CTDs frequently because of settings set too high.
Still, I think that the problem with MSFS is that it seems to be rather unpredictable.
I read a lot of issues from people who have better hardware than me (by far) and have moderate / high settings and still suffer from CTDs, bad FPS… so there is more involved instead of just detail settings / resolution / FPS).
So far I am rather lucky. I had one major issue a few months ago, but it was more related to the Store itself and the permission handling - and I of course suffered in the beginning of some CTDs over certain areas, but that was a common problem for almost all users and could be fixed by Asobo within a few weeks).
I run it on an i7/7700 / 1080Ti / 16GB Ram in 4k and Ultra settings and have a great experience - even in VR (with some settings lower obviously, but who needs ultra textures or ambient occlusion anyway if your headset´s resolution is too low to really notice these things…?). Of course there are areas (like London PG) where the sim cannot be called smooth with such settings, but I have no issue dialing down resoluation scale f.e. for such areas to get it running well. So all in all, sometimes I think I am lucky that I did not buy a new computer last year as planned - due to lack of graphic cards - reading of people who have the same hardware I was going to buy back then and still suffering from bad FPS in the same areas or having more CTD than I have (the last one seems to be weeks ago for me).
Overall, despite the areas of improvement it still has of course, for me MSFS is by far more stable than P3D or XP11… (but I have to admit that XP11 is rather full of custom stuff, and it is not hard to bring P3D V4 to its knees if you set the sliders to more than average - and it is also overloaded with ORBX stuff, has third party software running in the background in parallel etc. ).
So I think it is both: users being more realistic about what their system can handle und Asobo finding the issues some people have despite top hardware, massive RAM, …
There is no doubt that there seems to be some hidden instability in the code when some very specific parameters are met. I expect that is what makes it so difficult for Asobo to find those bugs. Need just the right combination of hardware, settings, background processes, et al.
I recently posted a list of basic system starting points. This goes hand in hand with this discussion.
If you have your system set up for maximum stability first then the same process develops. Once you have the sim running smoothly then you can start boosting the system. Best of both worlds when you have the software and the system tuned to play nice.
How? Serious question! I have the same hardware (except RAM, I have 64 GB), and there is no way I get smooth experience ultra on 1440p (and you mention 4k!). I get a smooth experience on a high-end setting at 1080p (around 30-40 FPS average). In VR… it’s a different story. (but I ultimately have found a sweet point between quality and smoothness).
@GothicHeart77 I would have to ask the same. I run i5-8400/2060Super/32GB. I can get smooth acceptable frame rates at 1080. 1440 if I stay away from dense areas. Nothing over 15fps at 4k.
Definitely some voodoo going on if you’re cruising at 4k.
Sorry for the late reply.
Actually I was not planning this, but I just started MSFS and checked my FPS during a test flight in the JF Piper Arrow III around Munich area (PG on) and enabled FPS counter (via developer mode) - actually for the first time I think.
I get 60-75 FPS on average and… no, just kidding, I am not.
I wanted to do it earlier, but never had the urge to as it FELT great, but here is the expected “sad” reality.
As said, I am not hunting for FPS and I am probably not expecting much FPS in a flight sim in first place, AND MSFS does a good job that it even feels still quite good with some drops below 20 FPS (which cannot be said for P3D f.e. which feels sluggish and does not deliver much of eye candy for the system hit, either).
Settings - basically ultra and sliders maxed out except:
Render Scaling 100% for 4k or 50% for FullHD for testing.
Motion Blur OFF
Lens Flare OFF
Glass Cockpit Refresh Rate Medium
Live Weather (only medium amount of clouds today)
(No Online Player today)
So, my results:
In regular environments and flight l get 25-40 FPS in 4k depending on flight level and amount of Objects (set to 200 each).
This drops to around 18-21 FPS over Munich in PG and low flight level over the city. So maybe “smooth” is the wrong word, though it feels rather good, but it is admittedly not smooth like f.e. Doom On the other side I would not be flying so low normally.
With Resolution set down to FullHD, over Munich PG, FPS went up to 26-35, outside Munich 40-45 with same settings.
So I think it is not vodoo magic and within what can be expected. Nevertheless I think it is a good result for a medium pc
especially when I would have expected MUCH more FPS from users running it on 3080/3090 with a much faster i7 or i9…
I did not test now what my FPS show over US cities in PG or in general, but it feels the same to me, as it does with Online players set to ALL or in bad weather conditions.
There have been a few areas of course which almost melt my system, like London (at least when it was released) - but I have read the same from 3090 users. It is better now by far, but still more sluggish than other cities, so I have to go down in resolution for that area (or turn of PG and it is on average again). So far, I think it has been the only area besides one PG city in Japan, not sure which it was. For all my other flights the settings deliver good results (as above probably) and I do not have any CTD. And I do not fly that often close over PG cities. Without PG, the FPS stay in the range of 30-40 FPS and up to 50 FPS in Full HD. In more remote areas without so many city object, FPS might get a bit higher, too.
in VR, it is of course a different story. I run it on a Rift S in standard resolution (render scale 100).
I dropped down Anisotrpoic Filtering to 4x instead of 16x .
Contact Shadows and Ambient Occlusion are OFF (the latter one is eating up a lot of resources on my system and while you can see a difference (especially on dense forests) , it is not that much obvious with the lower resolution. Terrain Shadows and Shadow Masp are down to the default setting 768 / 512. Cockpit refresh rate is set to Low. The remaining settings are still Ultra with Terrain and Object LOD to 100).
With these settings, head movements are completely smooth without any tearing. The FPS averages around 27-30 FPS with 40+ now and then and does not drop below 20 so far - even over Munich PG to my surprise (rolling cache off). I assume, most people get problems with these FPS in VR, but I don´t really bother/noticed (so far). So maybe it´s just me.
However, I set today some texture settings down to medium and can get another 5 FPS on average. And I do not really see that much of a difference within the VR resolution.
Again, when London was released, there was no way to fly that in VR. Now it is ok, but still not enjoyable, at least up and close. Beside that area, flying in VR feels really good (well, at least for me).
So it is no magic, maybe I just can cope with some FPS drops and feel it to be better than it actually is.
On the other hand I have read, a 3080 manages around 40-45 FPS in 4k on average, which is not really that high of a jump compared to its price, although I do not remember if his are heavy areas or average ones…
Nevertheless, I am looking forward to test this again in the future, once the availability of the 3080 (TI maybe?) or 3090 is better and prices return to where they have been last Oct/Nov…
Maybe this test puts my feelings and reality back into what makes sense to you.
I keep flying happily even after this test. But maybe I will not use the word “smooth” so lightly…
Yeah nice to run 25 frames in VR at low altitude above a city. I get the impression that 1080 Ti performs better than other boards. Also more expensive boards. Wonder why that is… btw I run anisotropic filtering Off… I don’t really see the difference.