Jump to content
Sign in to follow this  
Mejjo

P3D 5.3 Hotfix 2 released

Recommended Posts

...also I forgot to mention in P3D display settings set the Frame Rate slider to unlimited and VSYNC=OFF for the test.

  • Upvote 1

Steve Waite: Engineer at codelegend.com

Share this post


Link to post
15 minutes ago, SteveW said:

If you tell me your CPU details I can make recommendations there, i would need to know your CPU model and whether you have HT enabled or disabled.

My CPU is i7-6700K (not overclocked) 4GHz (to max 4.2GHz).

7 minutes ago, SteveW said:

...also I forgot to mention in P3D display settings set the Frame Rate slider to unlimited and VSYNC=OFF for the test.

This is my standard setting.

Thank you very much for the help, I will test it!

  • Like 1

Share this post


Link to post

The i7-6700K is four cores with 8 threads when HT enabled. Personally I would enable HT on that for P3D giving 8 Logical Processors. You can check how it is configured by going into Task Manager and near the bottom of the Performance page it will say:

Cores: 4

Logical Processors: 8

I write out a Logical Processor Map:

03,02,01,00=core number
76,54,32,10=LP number
11,11,11,01=AffinityMask = 253
11,11,11,01=P3DCoreAffinityMask = 253
00,00,00,01=MainThreadScheduler = 0
00,00,01,00=RenderThreadScheduler = 1
00,00,10,00=FrameWorkerThreadScheduler = 2

And so in Prepar3D.cfg JobScheduler section I would write:

[JobScheduler]
AffinityMask=253
P3DCoreAffinityMask=253
MainThreadScheduler=0
RenderThreadScheduler=1
FrameWorkerThreadScheduler=2

I think that is the best you can do with four cores, that is what I would set.

After editing Prepar3D.cfg I would run P3D and lower the Display Settings quite a bit (temporarily for the test) so I can eliminate the possibility that settings are simply too detailed. Check that VSYNC=OFF and the Frame Rate slider is set to Unlimited. Close P3D.

If your GPU is Nvidia Restore/Apply Global and Prepar3D profile as I mentioned earlier. In the Prepar3D.exe profile Set the fps limit to 29 (or 36).

Check that the Monitor is set to maximum refresh rate.

Run P3D for the test.

Good luck! Let me know if the problem continues.

 

  • Like 1

Steve Waite: Engineer at codelegend.com

Share this post


Link to post

So I take it Hotfix 2 has cured the issue of the random severe FPS degradation?  Any reports on what was found to be the cause?


i7 6700K @ 4.6GHz, ASUS Z170-PRO GAMING, 32GB DDR4 2666MHz, 750W EVGA SuperNOVA, 512GB Samsung 960 PRO, 1TB Western Digital - Black Edition
RTX 2080Ti (MSI trio), Corsair H115i - 280mm Liquid CPU Cooler

Share this post


Link to post
4 hours ago, SteveW said:

The i7-6700K is four cores with 8 threads when HT enabled. Personally I would enable HT on that for P3D giving 8 Logical Processors. You can check how it is configured by going into Task Manager and near the bottom of the Performance page it will say:

Cores: 4

Logical Processors: 8

I write out a Logical Processor Map:

03,02,01,00=core number
76,54,32,10=LP number
11,11,11,01=AffinityMask = 253
11,11,11,01=P3DCoreAffinityMask = 253
00,00,00,01=MainThreadScheduler = 0
00,00,01,00=RenderThreadScheduler = 1
00,00,10,00=FrameWorkerThreadScheduler = 2

And so in Prepar3D.cfg JobScheduler section I would write:

[JobScheduler]
AffinityMask=253
P3DCoreAffinityMask=253
MainThreadScheduler=0
RenderThreadScheduler=1
FrameWorkerThreadScheduler=2

I think that is the best you can do with four cores, that is what I would set.

After editing Prepar3D.cfg I would run P3D and lower the Display Settings quite a bit (temporarily for the test) so I can eliminate the possibility that settings are simply too detailed. Check that VSYNC=OFF and the Frame Rate slider is set to Unlimited. Close P3D.

If your GPU is Nvidia Restore/Apply Global and Prepar3D profile as I mentioned earlier. In the Prepar3D.exe profile Set the fps limit to 29 (or 36).

Check that the Monitor is set to maximum refresh rate.

Run P3D for the test.

Good luck! Let me know if the problem continues.

 

Here I am, forgot to specify I am with HT Enabled. 

Just did a quick test following your instructions and I noticed a slight improvement, it only remains the strange stutters when quickly returning to leveled flight.
For the rest I'd say it's smoother. I tried both, with low settings and the "normal" setting I was using until now and I had the exact same result.
Also with FPS limited to 36 on Nvidia control panel is less smooth than unlimited (I always had the feeling Nvidia CP doesn't work well for me when limiting FPS).

So, final verdict, smoothing is definitely better with the exceptions of quick plane maneuvers. Test here: https://streamable.com/9mmx5p
Could it be related to views/smoothing and/or Chaseplane stuff?

Thank you very much for your help, really appreciated 😄

Edited by Alexx Pilot
  • Like 1

Share this post


Link to post
2 hours ago, IAhawkeyeDDS said:

So I take it Hotfix 2 has cured the issue of the random severe FPS degradation?  Any reports on what was found to be the cause?

Yes and no (unfortunately).


Gigabyte x670 Aorus Elite AX MB; AMD 7800X3D CPU; Deepcool LT520 AIO Cooler; 64 Gb G.Skill Trident Z5 NEO DDR5 6000; Win11 Pro; P3D V5.4; 1 Samsung 990 2Tb NVMe SSD: 1 Crucial 4Tb MX500 SATA SSD; 1 Samsung 860 1Tb SSD; Gigabyte Aorus Extreme 1080ti 11Gb VRAM; Toshiba 43" LED TV @ 4k; Honeycomb Bravo.

 

Share this post


Link to post
3 hours ago, Alexx Pilot said:

So, final verdict, smoothing is definitely better with the exceptions of quick plane maneuvers. Test here: https://streamable.com/9mmx5p
Could it be related to views/smoothing and/or Chaseplane stuff?

Thank you very much for your help, really appreciated 😄

OK good job! There won't be anything else you can do with the CPU, I would leave the affinity stuff alone at this stage because I don't think you can get more out of it than you have now.

I would go further along the process of elimination. From what you say about Unlimited and uncapped makes me wonder that something seems to be consistently pausing the flow, that would be evident whether you capped the fps or not. Something is going on unrelated to the CPU side of things and I don't think it's P3D or the monitor refresh because you tried capped and unlimited.

You could do a quick test fly in another area with stock scenery to see if the problem is the same. Or maybe a certain add-on causes P3D a problem which should be easy to eliminate for a test. You can usually just uncheck the add-ons in the options, add-ons menu and restart P3D.

 

 

 

  • Like 1

Steve Waite: Engineer at codelegend.com

Share this post


Link to post
18 hours ago, SteveW said:

11,10,09,08,07,06,05,04,03,02,01,00=core number
1,1,1,1,11,11,11,11,11,01,01,01=AffinityMask = 1048533
1,1,1,1,11,11,11,11,11,01,01,01=P3DCoreAffinityMask = 1048533
0,0,0,0,00,00,00,00,00,00,00,01=MainThreadScheduler = 0
0,0,0,0,00,00,00,00,00,00,01,00=RenderThreadScheduler = 1
0,0,0,0,00,00,00,00,00,01,00,00=FrameWorkerThreadScheduler = 2

Hi Steve,

Really thought I had a handle on this, but the above appears to be at variance with my earlier conclusions:

07,06,05,04,03,02,01,00=core number

00,11,11,11,01,01,01,11=P3DCoreAffinityMask=16215
00,00,00,00,00,00,01,00=MainThreadScheduler=2 = LP2
00,00,00,00,00,01,00,00=RenderThreadScheduler=3 = LP4
00,00,00,00,01,00,00,00=FrameWorkerThreadScheduler=4 = LP6

I wrote: “Is it as simple as counting from Core 00=1, Core 01=2, Core 02=3 and Core 03=4 and the threads are placed on the Logical Processor of each of the three Cores as defined by the P3DCoreAffinityMask?”

MainThreadScheduler = 0
RenderThreadScheduler = 1
FrameWorkerThreadScheduler = 2

In your example with the 0, 1 and 2 ThreadScheduler Physical Core assignments, these are matching the core numbers as defined in your first line, i.e. Core 00 = 0. However, the ThreadScheduler Physical Core assignments in my example appear to be suggesting that Core 00 is in fact being designated as 1. You liked that post so my assumption was that this was correct. Now it seems that I was mistaken  😟

Hence my relapsing state of confusion...lol!

I’m afraid this numpty still needs your ever helpful hand to bring some further clarity, please.

Thanks.

Regards,

Mike

 

 

  • Like 1

Share this post


Link to post
50 minutes ago, Cruachan said:

“Is it as simple as counting...

Hi Mike,

To locate the three main tasks we count the ones (from right to left starting with zero on the right) in the "P3DCoreAffinityMask" which is the "container" for the P3D tasks, the "AffinityMask" is the "container" for add-ons launched from the sim and must contain the ones in the "P3DCoreAffinityMask".

So with your 8 core HT enabled you wanted to avoid the main task located on core 00?

So to do that I can write out a Logical Processor Map:

07,06,05,04,03,02,01,00=Core Number
.........98,76,54,32,10=LP Number
11,11,11,11,01,01,01,11=AffinityMask = 65367
11,11,11,11,01,01,01,11=P3DCoreAffinityMask = 65367
         65,-4,-3,-2,10 counting the "ones" in P3DCoreAffinityMask 
00,00,00,00,00,00,01,00=MainThreadScheduler = 2 = (is LP 2 of LP Number row, CPU 2 in Task Manager)
00,00,00,00,00,01,00,00=RenderThreadScheduler = 3 = (is LP 4 of LP Number row, CPU 4 in TM)
00,00,00,00,01,00,00,00=FrameWorkerThreadScheduler = 4 = (is LP 6 of LP Number row, CPU 6 in TM)

gives:

[JobScheduler]
AffinityMask=65367
P3DCoreAffinityMask=65367
MainThreadScheduler=2
RenderThreadScheduler=3
FrameWorkerThreadScheduler=4
 

I have checked this by booting up with 8 cores in HT and P3DCoreAffinityMask=65367 with Main=2, Render=3, FrameWorker=4 appear in the correct places CPUs 2, 4 and 6 in Task Manager graphs (Logical Processor View). The sim runs very well.

In Task Manager I can see there are scenery gatherers on CPU 0 and CPU 1, then on CPUs 8 to 15.

CPUs 3, 5 and 7 are empty.

I hope that helps with the alignment in the code window.

Best regards

Steve

 

  • Like 1

Steve Waite: Engineer at codelegend.com

Share this post


Link to post

Hi Mike,

I have been experimenting with 8 Cores HT Enabled and I thought to allow you to compare a similar setup using core zero for the main task which gives you (and everyone else) another example:

8 Core HT Enabled using core zero for the main task
07,06,05,04,03,02,01,00=Core Number
.........98,76,54,32,10=LP Number (CPU # in Task Manager)
11,11,11,11,11,01,01,01=AffinityMask = 65493
11,11,11,11,11,01,01,01=P3DCoreAffinityMask = 65493
.........65,43,-2,-1,-0 counting the "ones" in P3DCoreAffinityMask 
00,00,00,00,00,00,00,01=MainThreadScheduler = 0 = (is LP 0 of LP Number row, CPU 0 in Task Manager)
00,00,00,00,00,00,01,00=RenderThreadScheduler = 1 = (is LP 2 of LP Number row, CPU 2 in TM)
00,00,00,00,00,01,00,00=FrameWorkerThreadScheduler = 2 = (is LP 4 of LP Number row, CPU 4 in TM)

[JobScheduler]
AffinityMask=65493
P3DCoreAffinityMask=65493
MainThreadScheduler=0
RenderThreadScheduler=1
FrameWorkerThreadScheduler=2
 

Checking this again the three main tasks appear on the correct CPU # in Task Manager. This allows you some comparison to make things clearer hopefully. This worked just as well.

While messing around, with lower P3D Display Settings to distances of objects I can see that the RenderThreadScheduler and the FrameWorkerThreadScheduler are only taking up 40% and 30%. So I thought to throw in another example whereby RenderThreadScheduler and FrameWorkerThreadScheduler are on the same HT Core one on each Logical Processor:

8 Core HT Enabled using core zero LP0 for the main task and using core 1  LP2 and LP3 for Render and FrameWorker: This basically adds two LPs for scenery gathering and those hit 100% a little less often on the same flight. However when ramping up the settings those two main tasks will start to compete for core bandwidth as they are on each LP of core 1.

07,06,05,04,03,02,01,00=Core Number
.........98,76,54,32,10=LP Number (CPU # in Task Manager)
11,11,11,11,11,11,11,01=AffinityMask = 65533
11,11,11,11,11,11,11,01=P3DCoreAffinityMask = 65533
...............43,21,-0 counting the "ones" in P3DCoreAffinityMask 
00,00,00,00,00,00,00,01=MainThreadScheduler = 0 = (is LP 0 of LP Number row, CPU 0 in Task Manager)
00,00,00,00,00,00,01,00=RenderThreadScheduler = 1 = (is LP 2 of LP Number row, CPU 2 in TM)
00,00,00,00,00,00,10,00=FrameWorkerThreadScheduler = 2 = (is LP 3 of LP Number row, CPU 3 in TM)

[JobScheduler]
AffinityMask=65533
P3DCoreAffinityMask=65533
MainThreadScheduler=0
RenderThreadScheduler=1
FrameWorkerThreadScheduler=2
 

Checking this again the three main tasks appear on the correct CPU # in Task Manager. This works really well so long as settings are not maxed.

I also noted how much bandwidth the system is using when the sim is running and it is next to nothing. Then close the sim and several LPs have activity with a browser open. So in fact Windows is doing a good job of lowering other processes while the sim runs.

 

 

  • Like 1
  • Upvote 1

Steve Waite: Engineer at codelegend.com

Share this post


Link to post
4 hours ago, Cruachan said:

I wrote: “Is it as simple as counting from Core 00=1, Core 01=2, Core 02=3 and Core 03=4 and the threads are placed on the Logical Processor of each of the three Cores as defined by the P3DCoreAffinityMask?”

MainThreadScheduler = 0
RenderThreadScheduler = 1
FrameWorkerThreadScheduler = 2

In your example with the 0, 1 and 2 ThreadScheduler Physical Core assignments, these are matching the core numbers as defined in your first line, i.e. Core 00 = 0. However, the ThreadScheduler Physical Core assignments in my example appear to be suggesting that Core 00 is in fact being designated as 1. You liked that post so my assumption was that this was correct. Now it seems that I was mistaken  😟

Hence my relapsing state of confusion...lol!

I’m afraid this numpty still needs your ever helpful hand to bring some further clarity, please.

If you don't want to worry about how to count up these cores (they are relative to the P3DCoreAffinityMask), just use this tool.  It will handle all the binary stuff and the relative calc for the ThreadScheduler cores.  Click to edit the masks for your various cores/hyperthreaded logical processors, and the [JobScheduler] entry will be generated at the bottom for you.

Here's a link to the last config that SteveW posted for your 8 core, 16 thread processor:

https://izn-flightsim.s3.amazonaws.com/affinity.html?cores=8&threads=16&affinity=65493&coreAffinity=65493&mainThread=0&renderThread=1&frameThread=2#presetAnchor

  • Like 3
  • Upvote 1

Share this post


Link to post
14 hours ago, SteveW said:

I would go further along the process of elimination. From what you say about Unlimited and uncapped makes me wonder that something seems to be consistently pausing the flow, that would be evident whether you capped the fps or not. Something is going on unrelated to the CPU side of things and I don't think it's P3D or the monitor refresh because you tried capped and unlimited.

You could do a quick test fly in another area with stock scenery to see if the problem is the same. Or maybe a certain add-on causes P3D a problem which should be easy to eliminate for a test. You can usually just uncheck the add-ons in the options, add-ons menu and restart P3D.

I will test more regarding addons, here is a quick screen about CPU usage during my previous test: https://imgur.com/IkiHf9x
Thank you very much again for your help!

  • Like 1

Share this post


Link to post
10 minutes ago, MammyJammy said:

If you don't want to worry...

Very nice. I tested it out and it seems to work well. Very helpful, thank you!

The problem I have seen is that unfortunately some users are having a hard time understanding where to actually put the threads and then not getting useful results they desire. Hopefully with my AVSIM posts they are having less trouble.

 

On the subject; in the next update coming soon to Ideal Flight I have included a new function that observes the CPU and HT mode and calculates a decent set of values and if the user agrees the function will also enter the values into Prepar3D.cfg for them.

 

  • Like 2
  • Upvote 1

Steve Waite: Engineer at codelegend.com

Share this post


Link to post
15 minutes ago, Alexx Pilot said:

I will test more regarding addons, here is a quick screen about CPU usage during my previous test: https://imgur.com/IkiHf9x
Thank you very much again for your help!

Thanks for the picture of the CPUs in Task Manager you posted - looks all good there, nothing more to do on that side of things.

Hopefully you might find something in the add-ons, it is possible that something has been affected by the new version updates to P3D and something can be done. I am assuming you started to see this problem since updating?

  • Like 1

Steve Waite: Engineer at codelegend.com

Share this post


Link to post
38 minutes ago, SteveW said:

I am assuming you started to see this problem since updating?

Yes, that's correct! That's the first time I'm having this. 
I completely removed everything before installing V5.3 HF2 coming from V5.2 (since I skipped the previous 5.3 version). 
 

Edited by Alexx Pilot
  • Like 1

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  
  • Tom Allensworth,
    Founder of AVSIM Online


  • Flight Simulation's Premier Resource!

    AVSIM is a free service to the flight simulation community. AVSIM is staffed completely by volunteers and all funds donated to AVSIM go directly back to supporting the community. Your donation here helps to pay our bandwidth costs, emergency funding, and other general costs that crop up from time to time. Thank you for your support!

    Click here for more information and to see all donations year to date.
×
×
  • Create New...