Jump to content
Sign in to follow this  
Boeingnut

Horrible FPS

Recommended Posts

6 minutes ago, Caveney737 said:

I'm considering turning HT on with my 9900K and messing around with these settings. It always used to make the performance worse on my setup

but maybe now I can use it to positive effect. Interested to hear how you get on!

If you have it overclocked as I do (5.2GHz), prepare for a 20 C + of heat when simming. Without touching [JobScheduler] section HT on gives worst performance than HT off.


Sergio Naiberg

Share this post


Link to post
1 minute ago, SergioN said:

If you have it overclocked as I do (5.2GHz), prepare for a 20 C + of heat when simming. Without touching [JobScheduler] section HT on gives worst performance than HT off.

For me in 5.3, HT on gave a much less stuttery performance then HT off even without changing the AffinityMask. Using SteveW's settings is even  better.

  • Like 1

Share this post


Link to post

With P3D and FSX we can't simply turn HyperThreading on (HT or SMT) without using an appropriate AffinityMask (AM) else P3D will have main tasks sharing cores as I showed in this post: So to put it bluntly; it is a mistake to use HT enabled and no AM in FSX and P3D.

That has been the issue since FSX came out.

With HT disabled we have very little worry about Affinity (FSX or P3D) and we can ignore AffinityMask - unless we have a very large number of cores whereby we might want to restrict that number of cores with an appropriate AM.


Steve Waite: Engineer at codelegend.com

Share this post


Link to post

I do not use an extreme overclock (9980Xe@4.6GHz 2x2080ti+NVLink) and yet I get a lot more fps than the capped rate of around 28-30fps on a 60Hz 4k monitor. I don't need fans whirring and extra heat and electricity bills and risk of CTD if I am getting over 60fps and capping at 30. It is better to concentrate on getting consistency between frames when the sim is flying over new scenery and objects and loading that new scenery efficiently. I can overclock to extremes and get a few more fps for no worth whatsoever.

  • Like 1

Steve Waite: Engineer at codelegend.com

Share this post


Link to post
5 minutes ago, SteveW said:

With P3D and FSX we can't simply turn HyperThreading on (HT or SMT) without using an appropriate AffinityMask (AM) else P3D will have main tasks sharing cores as I showed in this post: So to put it bluntly; it is a mistake to use HT enabled and no AM in FSX and P3D

Is this the case even with the default AM that LM sets? - for me I can promise you it was better than with HT off: This was what I replaced:

P3DCoreAffinityMask=63
MainThreadScheduler=0
RenderThreadScheduler=2
FrameWorkerThreadScheduler=4
AffinityMask=63

 

  • Like 1

Share this post


Link to post
Just now, simfan1983 said:

Is this the case even with the default AM that LM sets? - for me I can promise you it was better than with HT off: This was what I replaced:

P3DCoreAffinityMask=63
MainThreadScheduler=0
RenderThreadScheduler=2
FrameWorkerThreadScheduler=4
AffinityMask=63

 

With P3D v5.3 we are now always using an AM and that default setting of the 3 Thread Schedulers avoids core sharing but not always fully. We must inspect Task Manager and see what is happening to be sure we are giving the maximum throughput of the main core to the MainThreadScheduler to keep fps at a maximum. Have a look at the screenshot i posted earlier showing a net gain in FPS by arranging things slightly differently to the defaults. P3D can't work out what will be the best settings, so it rather simply sets defaults that should be helpful on most systems but usually are not going to be the best setting..


Steve Waite: Engineer at codelegend.com

Share this post


Link to post
21 minutes ago, SteveW said:

With P3D and FSX we can't simply turn HyperThreading on (HT or SMT) without using an appropriate AffinityMask (AM) else P3D will have main tasks sharing cores as I showed in this post: So to put it bluntly; it is a mistake to use HT enabled and no AM in FSX and P3D.

I did try various Affinity Masks when I used HT on, based on your previous posts, but I could never find a sweet spot and it always caused more stuttering.

I use a moderate overclock of 5.0 Ghz to allow a lower vcore setting and lower temps so when I do use HT the temps are still well within spec.

What would you recommend as a starting point for these settings with a 9900K and HT on, if it's not too much bother? I was going to try:

AffinityMask=65493
P3DCoreAffinityMask=65493
MainThreadScheduler=0
RenderThreadScheduler=1
FrameWorkerThreadScheduler=2

 

Edited by Caveney737
Additional info
  • Like 1

Share this post


Link to post
1 minute ago, SteveW said:

With P3D v5.3 we are now always using an AM and that default setting of the 3 Thread Schedulers avoids core sharing but not always fully. We must inspect Task Manager and see what is happening to be sure we are giving the maximum throughput of the main core to the MainThreadScheduler to keep fps at a maximum. Have a look at the screenshot i posted earlier showing a net gain in FPS by arranging things slightly differently to the defaults. P3D can't work out what will be the best settings, so it rather simply sets defaults that should be helpful on most systems but usually are not going to be the best setting..

Yes, I have used your suggested AM settings and they are an improvement over the default. I was just pointing out that 5.3 sets an AM by default so few people will presumably be using no AM with 5.3?

  • Like 1

Share this post


Link to post
Just now, simfan1983 said:

Yes, I have used your suggested AM settings and they are an improvement over the default. I was just pointing out that 5.3 sets an AM by default so few people will presumably be using no AM with 5.3?

Yes exactly. However, "no AM" is in fact an AM that unmasks every logical processor, we could set the AM=0 and that is the same. If we set the AM=0 in P3Dv5.3 it will change it to the AM that unmasks every logical processor.

  • Like 1

Steve Waite: Engineer at codelegend.com

Share this post


Link to post
7 minutes ago, Caveney737 said:

I did try various Affinity Masks when I used HT on, based on your previous posts, but I could never find a sweet spot and it always caused more stuttering.

I use a moderate overclock of 5.0 Ghz to allow a lower vcore setting and lower temps so when I do use HT the temps are still well within spec.

What would you recommend as a starting point for these settings with a 9900K and HT on, if it's not too much bother?

9900k is 8 core and 16 LP with HT enabled.

Bear in mind that setting an affinity in P3D does not stop other programs from spilling into those cores running the time critical stuff of P3D and sapping throughput that way. We can control where other programs run with programs like Process Lasso or starting from a specially prepared batch file so these programs are forced to avoid sharing the main cores of P3D..

With 8 cores HT enabled (16LPs) I would first try:

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

 

  • Like 1

Steve Waite: Engineer at codelegend.com

Share this post


Link to post
Just now, SteveW said:

9900k is 8 core and 16 LP with HT enabled.

Bear in mind that setting an affinity in P3D does not stop other programs from spilling into those cores running the time critical stuff of P3D and sapping throughput that way. We can control where other programs run with programs like Process Lasso or starting from a specially prepared batch file so these programs are forced to avoid sharing the main cores of P3D..

With 8 cores HT enabled (16LPs) I would first try:

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

 

Thanks Steve, I will give that a try. By the way, I do use Process Lasso to move other programs away from the main P3D cores.

  • Like 1
  • Upvote 1

Share this post


Link to post

Using the example for the 8 core / 16 LP CPU in HT mode:

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

Putting 21845 into the DEC field of Windows Calculator in Programmer mode gives the BIN value 101010101010101. Because we are in HT mode we should be using the proper nomenclature so that binary value will look like this: 01,01,01,01,01,01,01,01 showing we are in HT mode with 2 LPs per core. Lining up the binaries we can see more clearly, remember that LP 0 is the right-most digit (core 0 is the right-most two digits):

01,01,01,01,01,01,01,01 = 21845 = AffinityMask
01,01,01,01,01,01,01,01 = 21845 = P3DCoreAffinityMask
00,00,00,00,00,00,00,01 = 0 = MainThreadScheduler
00,00,00,00,00,00,01,00 = 1 = RenderThreadScheduler
00,00,00,00,00,01,00,00 = 2 = FrameWorkerThreadScheduler


Now let's look at a more extreme setup that maximises the use of HyperThreading to collect and assemble new scenery and object data:

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

We still have three cores with only one LP enabled, the remaining cores have both LPs enabled. This may be too much throughput of the system given to loading scenery and that can reduce the system throughput available to the main task. So we may require less "11," and more "01":

11,11,11,01,01,01,01,01 = 64853 = AffinityMask
11,11,11,01,01,01,01,01 = 64853 = P3DCoreAffinityMask
00,00,00,00,00,00,00,01 = 0 = MainThreadScheduler
00,00,00,00,00,00,01,00 = 1 = RenderThreadScheduler
00,00,00,00,00,01,00,00 = 2 = FrameWorkerThreadScheduler

 

  • Like 3

Steve Waite: Engineer at codelegend.com

Share this post


Link to post
1 hour ago, simfan1983 said:

Is this the case even with the default AM that LM sets? - for me I can promise you it was better than with HT off: This was what I replaced:

P3DCoreAffinityMask=63
MainThreadScheduler=0
RenderThreadScheduler=2
FrameWorkerThreadScheduler=4
AffinityMask=63

 

63 (Dec) = 111111 (Bin)

If this is LM’s default value for what I’m assuming to be a 6 cored CPU then the initial value is being based simply on the physical core count of the CPU with HT=OFF. This is unlikely to be ideal. With version 5.3 I believe that, by giving us these additional options, LM are encouraging us to take control of optimisations to satisfy our individual, often unique, requirements. 

By now, LM will be aware that we are becoming much more Affinity Mask savvy these days and, I’m deducing, felt the time was right to help us to exploit this hard won knowledge by expanding the Affinity Mask possibilities. 

Mike

Edited by Cruachan
  • Like 2

Share this post


Link to post
1 hour ago, SteveW said:

unless we have a very large number of cores whereby we might want to restrict that number of cores with an appropriate AM.

Steve, 

Could you define a very large number of cores? I'm running a 5950x, which has 16 cores? Thanks.

  • Like 1

Share this post


Link to post
2 minutes ago, Iadbound said:

Steve, 

Could you define a very large number of cores? I'm running a 5950x, which has 16 cores? Thanks.

As I mentioned that depends on the motherboard and other hardware (which defines the complete system bandwidth) just how many is too many is something you  will have to find. it could be that no amount is too many for that system.


Steve Waite: Engineer at codelegend.com

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...