Poor Performance with RTX 3080 and 3900X CPU " Limited by MainThread"

no.. the issue with Directx11 is exactly that there is “one” main thread which is responsible to manage the work for the GPU ! And what is the issue about we told here in the thread ?! :wink:
DirectX12 is much more better related to multi-threading / parallel work.

And as say’d .. compare e.g. XPlane11 before and after Vulcan ! or also check partly Prepare3D ..

The developers already stated we’re not going to get much extra performance out of DX12. It’s mostly going to add some nice new visual effects.

You do know he is running an 1440p Ultrawide which to say the GPU should be working harder. A 1440p wide monitor imo is a better experience than a 4k 16:9 ratio monitor.Whatever is going on is an issue with the game so telling someone to dump their monitor due to a game issue isn’t a viable solution.

The problem with that CPU is the single threaded performance. Like most games and specially DX11 benefits from higher clock speeds.Unfortunately a limiting factor on AMD cpus.

On the 5th of november this will be solved with the new Zen 3 CPU’s. If AMD’s marketing material is to be believed, it’s going to be better than anything Intel has on offer.
Also, don’t just focus on clockspeeds, you need to take IPC (instructions per clock) into consideration.

Anyways, as always, wait for independent benchmarks.

so.. if they can sell more expensiv graphic cards , if the topic comes on top “who have the best low-level graphic api” , and what ever… then allways the big DX12 is mention… and now, they would told us “ah now, was a joke.. MSFS is other as the rest of the world” ?.. I had 50-100% more fps in Xplane11 ( from unplayable 15 up to 30 ) and you told me now, its all not true ?

Of course a “manager” told you/us that ! .. how else they can justify / explain that they sell us a brand new game with DirectX11, whereas all other flight-sim since years re-implement here sim to the newer api, an they self develop in parallel the DX12 version ( because it is so worst api, that it becomse standard in xbox ) ?

The main thing about we speak here, and which is simple the main issue : that a lot of load is managed only by one single core ( and as mention, strange always same core ). And exact to fix this, is DX12 designt/created for.

Sorry, but I’ll trust the game developers who actually work on the implementation of DX12 on this Simulator over a random forum visitor.

On the topic; yes, they are constantly working on moving workloads away from the main thread. But they can only do this up to a certain point.

Dx12 isn’t going to lower main thread usage, sorry.

Yes, that does appear to be the case. However, in my individual case at least, while threads 1-2 on cores 1-5 appear to be pretty well balanced, T2 on C6 is almost always pegged. And it just so happens that hyperthreading T2s are not as powerful as T1s, and C6 is my weakest core.

The FR counter from dev mode identifies my bottleneck as a combination of “MainThread”, though it doesn’t say which one (or ones), and my GPU itself, which of course desirable as maxing out your GPU will give you the best results you can hope for. Task manager is of no help. I’m assuming, but it IS an assumption, that the “MainThread” identified as a bottleneck is also what’s pegging my C6T2.

I added a modest OC on my CPU, and cranked the GPU fans to max, and between those 2 adjustments managed to eek out another 10-12 fps, which on the one hand doesn’t sound like a lot, but on the other, when my baseline was 43 give or take (C172 G1000 on the runway at a medium density non-handcrafted airport), it’s actually a pretty big improvement. But that thread is still pegged, or very nearly so. Just moving it onto the primary thread of a better core would probably go a long way towards improving it, even if it’s STILL pegged there. I think C2T1 would be the best choice, as other things have a tendency to want to try to use C1.

Interestingly, I’m using a 144Hz display, and noticed that it wants to stay consistently between about 48 and 52 fps (when it can, and except in cruise, where I’m getting closer to 60ish), so much so that I went to see if I had inadvertently turned on Vsync, which I had not.

I’m using 1440p with 100% scaling so no issues there.

To clarify, I’m not at all disappointed in the overall performance I’m getting, except with the Carenado M20R at the high density handcrafted KMIA where I’m dipping into the 20s, but still averaging in the 30s. (Except with AI traffic turned on, that breaks the sim completely but is not really the issue being discussed here.) If I could just get 10 more fps overall I’d be completely satisfied, as I’m perfectly aware that flight sims aren’t one of those apps that need insane 100+ (or even 200+ that some people insist are absolute necessary) fps rates.

I think just a little better load balancing would get me there, and then some.

And this is all with “just” an “obsolete” 2070 Super and a 10600K with (now) a modest but stable OC. The GPU is highly binned and has a +175/+1000 stable OC, so that helps quite a bit, as long as I keep the fans maxed.

Of course, if moving to DX12 is going to solve this natively, I suppose there’s no point in putting even more resources into it.

Anyway, my two cents…

KevyKevTPA

You’re going to trust this game developer to deliver implementation of DX12 after the disaster that this release has been? good luck with that

How did you come to the conclusion core 6 is your weakest core? All the cores are running at the same frequency are they not? :thinking:

If my other option is to listen to you talking about how it should be done better, then yes, I’ll trust the devs.

Says someone whose programming experience is:
MessageBox.Show(“Hello World”);
:rofl:

It’s a report from the OC AI feature that came with my MB. Cores 1-4 can handle a 5GHz OC, 5 only 4.9, and 6 only 4.8. I’ve tried pushing those boundaries, but I end up with instability every time I do.

Cool I’ll check it out. But all the cores are running at the same frequency so it makes very little difference which one they are assigned to. And Windows typically handles all the thread assignment, and does it quite efficiently.

This wasn’t addressed to me, but I’ll answer anyway.

Yes, I trust MS and Asobo to deliver on DX12, and to do it right, and relatively quickly.

They did probably release the sim before it was fully baked, but I’ve given that some thought, and decided I’d rather have a somewhat buggy version in my hands now, than just left drooling over YouTube videos from beta testers. Others may feel differently, and that’s perfectly fine. They can simply wait until it’s up to their standards to buy it. Or not buy it at all. No harm, no foul.

KKT

When all 6 cores are active, they’re all running at 4.8GHz because they run at the lowest speed available to all. But that one thread (C6 T2) is ALWAYS pegged, even after applying an CPU OC and turning my GPU fans to max. Those things certainly helped, and noticeably so, but spreading that one thread’s load out would probably help even more, assuming it can be done in the first place. That’s well beyond my expertise.

All the other threads are running roughly the same, just eyeballing it it’s about 45-50%, including T1 on C6. Overall CPU usage (per Task Manager) is about 35% more or less.

I’ve found forum posts regarding the main game thread being a bottleneck way back to June 11, 2019 so I assume they’ve already moved everything they possibly can to other threads.
Some people are holding out hope DX12 will lower CPU usage but the devs have already said DX12 will not reduce CPU usage. Which means sorry dudes we have a running DX12 build and it’s still using the same amount of CPU. But maybe it’ll optimize some of the GPU load so even lower GPU usage :slight_smile:

Sometimes we just need faster tech and I’m ok with that, I’d rather they push the hardware to its limits then dial back scenery and whatever else is pushing the CPUs so hard.

you can’t spread the load from the ‘main thread’ to other threads. One of the main jobs of the main thread is to keep all the other processes synced up, so it can’t be spread out.
Asobo are still optimizing this, and are trying to move as many other loads over to other threads, but every process moved, will always have an effect on the main thread, since it’s yet another thing to keep synced up with all the other ones.

That’s the reason why multi-threaded loads like a tile renderer are so efficient with all the cores, they don’t need to be kept in sync.

If you want to experiment; you can dictate which threads are available to MSFS. Most people who try this remove threads 0 and 1 from MSFS, since they are regularly used by windows. But feel free to removed your slowest cores/threads from MSFS to see if it makes a difference (don’t do this if you don’t have many threads spare, since by that time MSFS won’t have enough threads available.

With MSFS running, go to your task manager, go to the ‘Details’ tab, and find and rightclick on ‘flightsimulator.exe’. From the menu select the ‘Select affinity’ option, and deselect the threads you don’t want it to use.

It just stings knowing that my CPU is “only” working at 35% capacity, but is still bottlenecked because the bottleneck is happening on one core, or in this case, thread. But sometimes that happens in a multi-core hyperthreaded environment, and sometimes there’s nothing that can be done about it. Obviously that wouldn’t happen if we were still in a world where CPUs had one core and one thread per socket, but that technology is completely obsolete in today’s world, and for good reason.