Skip to content
View in the app

A better way to browse. Learn more.

The AVSIM Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

P3D 5.3 Hotfix 2 released

Featured Replies

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

AMD Ryzen 7 9800X3D, 2x32GB DDR5 6000MT/s RAM, MSI RTX 4090 Ventus 3X, Windows 11 Home, MSFS2024

  • Replies 291
  • Views 54.3k
  • Created
  • Last Reply
  • Commercial Member
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
 


 

 

 

Steve Waite: Engineer at codelegend.com

  • Commercial Member
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

Thanks Steve, now I got it 😉 

Greetings, Chris

AMD Ryzen 7 9800X3D, 2x32GB DDR5 6000MT/s RAM, MSI RTX 4090 Ventus 3X, Windows 11 Home, MSFS2024

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😃

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.

FFTF Dynamic update released

Shom

 

MSFS2024 running on Win 11, 4K screen, Z790 AORUS ELITE AX-W, i9-14900K, MSI 3080Ti, Corsair 2x32GB 6000 MHz, 1+2TB M.2 NVMEs

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

  • Commercial Member
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

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

 

  • Commercial Member
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.

Steve Waite: Engineer at codelegend.com

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

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

 
 
 
 
 
  913456
  • Commercial Member

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

Steve Waite: Engineer at codelegend.com

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
 

Thomas ( Sundsvall, ESNN, Sweden)
MSFS 2024, 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 Comanche, WB Sim Cessna 152

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.

Archived

This topic is now archived and is closed to further replies.

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.