Jump to content
Sign in to follow this  
Mejjo

P3D 5.3 Hotfix 2 released

Recommended Posts

1 hour ago, SteveW said:

6 core HT Enabled 12 Logical Processors

4053 gives one core for each main task.

This I do not get, 4053 translates in my calculation to 1111 1101 0101. Why not 1365, which would translate to 0101 0101 0101 instead?


Greetings, Chris

Intel i5-13600K, 2x16GB 3200MHz CL14 RAM, MSI RTX 4080 Gaming X, Windows 11 Home, MSFS

Share this post


Link to post
2 minutes ago, AnkH said:

This I do not get, 4053 translates in my calculation to 1111 1101 0101. Why not 1365, which would translate to 0101 0101 0101 instead?

 

Here we are accelerating the scenery gathering with HT by using six LPs (in bold) and have:

05,04,03,02,01,00=core number
...98,76,54,32,10=LP numbers 0-11
11,11,11,01,01,01=AffinityMask = 4053
11,11,11,01,01,01=P3DCoreAffinityMask = 4053
00,00,00,00,00,01=MainThreadScheduler = 0
00,00,00,00,01,00=RenderThreadScheduler = 1
00,00,00,01,00,00=FrameWorkerThreadScheduler = 2

There is not much difference other than you will find the scenery loads faster giving a more efficient backend.

 

However 1365 is perfectly OK but only uses three Logical Processors for the background tasks (in bold):

05,04,03,02,01,00=core number
...98,76,54,32,10=LP numbers 0-11
01,01,01,01,01,01=AffinityMask = 1365
01,01,01,01,01,01=P3DCoreAffinityMask = 1365
00,00,00,00,00,01=MainThreadScheduler = 0
00,00,00,00,01,00=RenderThreadScheduler = 1
00,00,00,01,00,00=FrameWorkerThreadScheduler = 2

 

The background can be accelerated further by using one core for RenderThreadScheduler and FrameWorkerThreadScheduler:

4093 gives extra to the background tasks but shares core 1 to the Render and FrameWorker threads (in bold): 
11,11,11,11,11,01=AffinityMask = 4093
11,11,11,11,11,01=P3DCoreAffinityMask = 4093
00,00,00,00,00,01=MainThreadScheduler = 0
00,00,00,00,01,00=RenderThreadScheduler = 1
00,00,00,00,10,00=FrameWorkerThreadScheduler = 2
 


 

 

 

  • Like 1

Steve Waite: Engineer at codelegend.com

Share this post


Link to post
1 hour ago, IanHarrison said:

Hi Steve,

I tried this on a non- intensive scenery route from Kuala Lumpur to Dubai. FPS hovered around 28-30 (locked at 30). Vram 2.7/7.1. All good. Mini drops to 2-3 fps twice when descending, literally only a half second or so, and one 3-4 second drop to 2 fps when approaching airport to land.

LP % :0 = 100%: 1 = 5-10%: 2 = 40%: 3 = 30%: 4 = 30-80%: 5 = 30-80%: 6 = 90-100%: 7 = 90-100%. Taken on final approach.

Looks like this AM is the best so far.

Will try Dubai to Schiphol tomorrow, with TE Netherlands and Eham v2, a real test.

Thanks.

 

Hey Ian,

Just a thought, you might want to try capping at 30fps In Nvidia Control Panel (3D Settings, Prepar3D.exe profile, fps limit) this can provide useful overhead on the MainThreadScheduler core instead of locking at 30 (Display Settings Slider) which demands 100% because it is always making the next frame for the look ahead buffer. 


Steve Waite: Engineer at codelegend.com

Share this post


Link to post

Thanks Steve, now I got it 😉 

  • Like 1

Greetings, Chris

Intel i5-13600K, 2x16GB 3200MHz CL14 RAM, MSI RTX 4080 Gaming X, Windows 11 Home, MSFS

Share this post


Link to post
16 minutes ago, SteveW said:

Hey Ian,

Just a thought, you might want to try capping at 30fps In Nvidia Control Panel (3D Settings, Prepar3D.exe profile, fps limit) this can provide useful overhead on the MainThreadScheduler core instead of locking at 30 (Display Settings Slider) which demands 100% because it is always making the next frame for the look ahead buffer. 

Yes, Steve. That is what it is. 30 in NCP and unlimited in the sim. with vertical sync at 1/2 adaptive refresh rate. No Vsync in sim. as I find that does nothing for me.

Thanks for all your (grossly unpaid) help😃

  • Like 1

Intel i7 6700K @4.3. 32gb Gskill 3200 RAM. Z170x Gigabyte m/b. 28" LG HD monitor. Win 10 Home. 500g Samsung 960 as Windows home. 1 Gb Mushkin SSD for P3D. GTX 1080 8gb.

Share this post


Link to post

FFTF Dynamic update released

  • Like 1

Shom

 

[Win 10 Pro, i7-9700K, MSI 3080Ti, 4K screen, Crucial 2666 16GB, 2 500GB Samsung EVOs 850/860]

[MSFS 2020 running with Fenix A320, PMDG 737, FSS E-175, Aerosoft CRJ]

[P3D v5.3 HF2 running with ifly 737 Max 8, FSLabs A319/320/321, Feelthere E170/175/190/195 v3, PMDG 737 NGXu ,TFDI 717, Aerosoft CRJ Pro, Majestic Dash 8, CS 757 iii, Feelthere ERJ-145, Fly The Maddog X, QW 787, PMDG 777]

Share this post


Link to post

A clarification, please. I have the default Job Scheduler entry in my cfg. Yet, in Task Master, the affinity tab always shows every core enabled. I have to change that manually. Should I even bother doing that each time I boot P3D, or does the cfg entry override what Task Master reports. Thanks...this is all well above my pay grade...:-)

 

Sherm

Share this post


Link to post
2 minutes ago, shermank said:

A clarification, please. I have the default Job Scheduler entry in my cfg. Yet, in Task Master, the affinity tab always shows every core enabled. I have to change that manually. Should I even bother doing that each time I boot P3D, or does the cfg entry override what Task Master reports. Thanks...this is all well above my pay grade...:-)

 

Sherm

I can help you: What is your processor and is it HT enabled?


Steve Waite: Engineer at codelegend.com

Share this post


Link to post

HT enabled...

Intel Core i7-10700 CPU @ 2.90GHz

 NVIDIA GeForce GTX 1660 Ti

MOBO Micro-Star International Co. Ltd.
Model    Z490-A PRO (MS-7C75) (U3E1)

I should add that the sim runs perfectly, P3D v5.3 HF2.

Thanks,

Sherm

 

Share this post


Link to post
2 minutes ago, shermank said:

HT enabled...

Intel Core i7-10700 CPU @ 2.90GHz

 NVIDIA GeForce GTX 1660 Ti

MOBO Micro-Star International Co. Ltd.
Model    Z490-A PRO (MS-7C75) (U3E1)

I should add that the sim runs perfectly, P3D v5.3 HF2.

Thanks,

Sherm

 

OK. So you have 8 cores HT Enabled giving 16 Logical Processors. The thing to do with Affinity Masks is to ensure that when HT is enabled you do not share the main cores with other tasks.  Even though the defaults work OK they do allow sharing which is what we should avoid to allow maximum throughput of those cores running the main tasks.

I would use the following values in the JobScheduler section:

8 core HT enabled 16 Logical Processors:
[JobScheduler]
AffinityMask = 65493
P3DCoreAffinityMask = 65493 or 16341
MainThreadScheduler = 0
RenderThreadScheduler = 1
FrameWorkerThreadScheduler = 2

11,11,11,11,11,01,01,01=AffinityMask = 65493
11,11,11,11,11,01,01,01=P3DCoreAffinityMask = 65493 OR
00,11,11,11,11,01,01,01=P3DCoreAffinityMask = 16341
00,00,00,00,00,00,00,01=MainThreadScheduler = 0
00,00,00,00,00,00,01,00=RenderThreadScheduler = 1
00,00,00,00,00,01,00,00=FrameWorkerThreadScheduler = 2

The difference with 16341 is that it reduces the background task count by two Logical Processors leaving the last core free for other tasks. This reduces the backend throughput slightly which may free up system bandwidth slightly giving more system bandwidth to the simulator.

beware that unchecking cores in Task Manager, Details, Set Affinity after the sim is loaded is not the same and launching P3D with a proper set of affinity instructions in the first place.

 

Guys,

How much backend to use is something to test, it won't change the fps (so long as those main tasks are not sharing cores) but adjusting the backend does change the overall system throughput. Depending on system, if the system is over-saturated with all cores running then all cores suffer and inputs to the GPU can suffer.

  • Like 2

Steve Waite: Engineer at codelegend.com

Share this post


Link to post
4 hours ago, SteveW said:

The AffinityMask is the same because we don't want the simulator to use it for add-on processes which could otherwise share the core.

Trying my best to untangle the intentions behind the new JobScheduler scheme and that, for me, might well have been the light bulb moment!

I did not understand why in some posts and, indeed, under JobScheduler in Prepar3D.cfg (after first run of P3D) we were seeing the same initial values for AffinityMask and P3DCoreAffinityMask. In other posts the AffinityMask decimal value would also be CPU specific reflecting the total count of logical processors (available for P3D and 3rd Party Addons) for that CPU (with HT enabled), whereas the P3DCoreAffinityMask value would, instead, define only those LP’s masked for exclusive use by P3D.

In CPU’s with lower core counts, the identification and selection of specific cores for sharing with or the exclusive use of 3rd Party Addons becomes ever more important. So, it makes sense, I think, to match the ‘global’ AffinityMask with the user-defined, P3D specific P3DCoreAffinityMask and, by so doing, any remaining unmasked LP’s can be selected appropriately in, say, Process Lasso for running 3rd Party Addons...much as we were doing hitherto in previous versions.

Mike

Edited by Cruachan
  • Like 1

Share this post


Link to post
3 hours ago, SteveW said:

8700K is 6 a core CPU and with HT enabled it emulates 12 Logical Processors. So with HT Disabled there is nothing to do with six straight cores you will have three main tasks and three scenery gathering: '111111'=63.

6 core HT disabled:

[JobScheduler]
AffinityMask=63
P3DCoreAffinityMask=63
MainThreadScheduler=0
RenderThreadScheduler=2
FrameWorkerThreadScheduler=4

03020100=core number
111111=AffinityMask = 63
111111=P3DCoreAffinityMask = 63
000001=MainThreadScheduler = 0
000100=RenderThreadScheduler = 2
010000=FrameWorkerThreadScheduler = 4

With HT Enabled there will be more throughput available to the background tasks (scenery gathering) through hyperthreading at the expense of not allowing ultra high overclocking:

6 core HT Enabled 12 Logical Processors

4053 gives one core for each main task.

05,04,03,02,01,00=core number
...98,76,54,32,10=LP numbers 0-11
11,11,11,01,01,01=AffinityMask = 4053
11,11,11,01,01,01=P3DCoreAffinityMask = 4053
00,00,00,00,00,01=MainThreadScheduler = 0
00,00,00,00,01,00=RenderThreadScheduler = 1
00,00,00,01,00,00=FrameWorkerThreadScheduler = 2

4093 gives extra to the background tasks but shares core 1 to the Render and FrameWorker: 
11,11,11,11,11,01=AffinityMask = 4093
11,11,11,11,11,01=P3DCoreAffinityMask = 4093
00,00,00,00,00,01=MainThreadScheduler = 0
00,00,00,00,01,00=RenderThreadScheduler = 1
00,00,00,00,10,00=FrameWorkerThreadScheduler = 2
 


 

 

thank you very much


 
 
 
 
14ppkc-6.png
  913456

Share this post


Link to post

That's right Mike.

In the past the AffinityMask described all the cores (or LPs) the sim can use and add-ons launched from within the sim only have access to those cores, which were all allocated tasks of the simulator. When a parent program launches another program, that program can only 'see' cores that have been allocated to the parent by the JobScheduler.

The AffinityMask can be 'wider' (think of as an expansion) than the P3DCoreAffinityMask, because when P3D invokes an Add-on there will be more cores for the JobScheduler to allow those Add-Ons to use. Even so we still do not want to share the main cores so the Affinity for those should be the same.

In the example:

11,11,11,11,11,01,01,01=AffinityMask = 65493
11,11,11,11,11,01,01,01=P3DCoreAffinityMask = 65493 OR
00,11,11,11,11,01,01,01=P3DCoreAffinityMask = 16341
00,00,00,00,00,00,00,01=MainThreadScheduler = 0
00,00,00,00,00,00,01,00=RenderThreadScheduler = 1
00,00,00,00,00,01,00,00=FrameWorkerThreadScheduler = 2
 

The right-most three cores are hosting the main tasks and the AffinityMask is the same there as the P3DCoreAffinityMask so these cores are not offered to share with Add-ons launched by the simulator which can reside anywhere in the AffinityMask. The left-most cores are hosting the background tasks which we can also host add-ons, the reason is that the background tasks take seconds to complete are are not directly responsible for keeping the frame rate consistent as are the main tasks.

The P3DCoreAffinityMask must reside precisely inside the AffinityMask.

With the advent of P3D v5.3 we can now increase the amount of cores available to the Add-ons with the AffinityMask while the new P3DCoreAffinityMask is the basic AM space of older versions.

Interestingly, FSX expands affinity to all cores after the initial AffinityMask is adhered to when it starts, so is not a new concept. However with P3D v5.3 this has been improved to allow us to define more precisely. Even so, it is the responsibility of the Add-on to locate unused cores of the AffinityMask outside of the  P3DCoreAffinityMask.

When there are not enough cores it is OK to use cores allocated to background tasks.

Edited by SteveW
  • Like 1

Steve Waite: Engineer at codelegend.com

Share this post


Link to post

I am trying to understand this with the use of the Job Scheduler in P3D. When I think I understand at least some of it, I read @SteveW  reply to @shermank who has a processor ( Intel Core i7-10700) with the same number of cores (8) and HT enabled as I have in my Intel Core i9-9900K. P3D gives me an AffinityMask=65535 and not 65493. Why isn´t the AM the same from P3D? Here is what I use P3D.cfg
[JobScheduler]        
AffinityMask=65535        
P3DCoreAffinityMask=1364        
MainThreadScheduler=0        
RenderThreadScheduler=2        
FrameWorkerThreadScheduler=3
There's something I haven't understood right?        

/Thomas
 

  • Like 1

Thomas ( Sundsvall, ESNN, Sweden)
P3D V5.3 HF1, Intel 9 9900K Oc 5 GHZ 16MB, Corsair Hydro H150i PRO RGB 360mm, ASUS GeForce RTX 2080 SUPER 8GB ROG, 2 Corsair Force M2 MP600 1TB+500Gb, ASUS ROG MAXIMUS XI HERO Z390 MB, Corsair 32GB (2x16GB) DDR4 3200Mhz CL16, Fractal Design Define S2 Vision, Win 10 Home, BenQ 32" PD3200U 4K IPS monitor

A2A, Majestic Q400, Leonardo Maddog, IFly B737

Share this post


Link to post

If you want a visual tool that will help calculate affinity masks for whatever processor (cores and logical processors/HT/SMT), I built one:

http://izn-flightsim.s3-website-us-east-1.amazonaws.com/affinity.html

It will help you visualize how the AffinityMask (in blue) and the P3DCoreAffinityMask (in green) are laid out across your cores.  It will also not let you set an inappropriate P3DCoreAffinityMask and will handle the relative calcs for the thread schedulers.

  • Like 1
  • Upvote 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...