Jump to content
Sign in to follow this  
jmig

FPS and CPU/GPU loading in PD3 V4.1

Recommended Posts

2 minutes ago, Bert Pieke said:

I do not know, but I have a suspicion that the Windows scheduler will put its housekeeping work on the first logical processor that is available

yes and if I understood it right therefore:

7 minutes ago, SteveW said:

The behaviour generally is to move to the next LP when the LP looks busy so as to find a slacker place to start a process. 

does it make sense? It does for me atm.

Share this post


Link to post

If it makes sense to you, we have collectively accomplished something :happy:


Bert

Share this post


Link to post
1 minute ago, Bert Pieke said:

If it makes sense to you, we have collectively accomplished something :happy:

C'mon, Bert, I mentioned I felt miserable already :laugh:

Thanks!

Edited by Dirk98

Share this post


Link to post

So my inference (based on my comprehension capabilities lol):

10 may be a little more favorable over 01 because it is a good practice in very general terms to allocate a less busy LP to the main process (P3D). When P3D loads up LP0 might already be busy with something else, so if you intend to put P3D on the physical core 0 it might be better go give it the presumably slacker LP1. 

Thanks,

Edited by Dirk98

Share this post


Link to post
4 minutes ago, Dirk98 said:

So my inference (based on my comprehension capabilities lol):

10 may be a little more favorable over 01 because it is a good practice in very general terms to allocate a less busy LP to the main process. Because when P3D loads up LP0 might already be busy with something else, so if you intend to put P3D on the physical core 0 it might be better go give it the presumably slacker LP1.

Unfortunately that's over simplifying it to the extent so as to make it seem like there's some importance to LP0 over LP1 but there's not. You can't assume LP0 is busier than LP1 of any core since they are the same core and all cores are treated equally.


Steve Waite: Engineer at codelegend.com

Share this post


Link to post

...if you see one LP of a core maxed in the Task Manager graphs - that's the entire core maxed. The two LPs of an HT core are processing on the same core with the same time slicing - think of HT as improving switching time between threads - the CPU time slices each process on a core - so adding HT gives two lots of hardware to improve performance when changing over threads whereas a non-HT variant CPU has not.


Steve Waite: Engineer at codelegend.com

Share this post


Link to post

Then I'm still struggling to fathom this part:

1 hour ago, SteveW said:

the jobscheduler picks slack places to fill with process and that might pan out slightly differently with the sim on 10 or 01. When the sim loads up the main process might be slacker than the other processes during loading a scenario and there's a weather engine loading up...

What is "the main process" that might be slacker?

Thanks.

Share this post


Link to post

If I could only understand what exactly Vaasudeva Steve meant by "the main process" in context there I'd be able to solve this charade. :biggrin:

Anybody?

Thanks!

 

 

 

 

 

Edited by Dirk98

Share this post


Link to post

With P3D there is a process that starts and it has the interface and the rendering of the scene. It is fed by other processes - we want that having total throughput of a core. So if we see this one LP very busy all the time we don't want another process on the same core on the other LP unless we just don't have many cores. With v4 they have split more out of that main process so it is leaner if we have enough LPs. The next process is very small so it sits on the next LP and it's utilising the performance of HT rather than both being on one non-HT core.

The jobscheduler will have statistics of activity and decide where to put a new process, it looks for a slacker core, a core doing less work at the time.

Generally the PC won't start stuff up while simming but we have other stuff running alongside - so we can shove all that on certain cores with apps or a batch file and put the sim on others.

If we specify no jobscheduler section in the config:

The sim has by definition an AM=0=the number of LPs you have rather than none - no LPs at all is useless - zero is used in reverse to indicate whatever count of LPs we have.

So if we have a four core we have an AM=0=15

if we enable HT we have AM=0=11,11,11,11=255

So you can see there's no such thing as NO AM. There's always an AM with an app like P3D because they have gone to the trouble of making it up from separate parts that will by the definitions of their starting calls be placed on the next LP from their previous counterpart as each part is started. These are not actual threads think more like jobs. In fact there's more than 57+ threads in a stock P3D run all start within that AM=0 (or whatever we give it. So in way when we have no AM and an app like P3D we get the first process on core zero because of the way the AM is asking for all LPs.

  • Upvote 1

Steve Waite: Engineer at codelegend.com

Share this post


Link to post
34 minutes ago, SteveW said:

With P3D there is a process that starts and it has the interface and the rendering of the scene. It is fed by other processes - we want that having total throughput of a core. So if we see this one LP very busy all the time we don't want another process on the same core on the other LP unless we just don't have many cores. With v4 they have split more out of that main process so it is leaner if we have enough LPs. The next process is very small so it sits on the next LP and it's utilising the performance of HT rather than both being on one non-HT core.

I think this particular part answers my question 100% about 10 over 01 :laugh:.

 

34 minutes ago, SteveW said:

So you can see there's no such thing as NO AM. There's always an AM with an app like P3D because they have gone to the trouble of making it up from separate parts that will by the definitions of their starting calls be placed on the next LP from their previous counterpart as each part is started. These are not actual threads think more like jobs. In fact there's more than 57+ threads in a stock P3D run all start within that AM=0 (or whatever we give it. So in way when we have no AM and an app like P3D we get the first process on core zero because of the way the AM is asking for all LPs.

On my next pc build based around a 10-Core i9 7900X I don't think I'll benefit by enabling HT at all.

I'll rather go for AM=1022 leaving the first Core entirely for Windows and push GHz even higher a bit without HT enabled. But I'll also check AM=1023. I think 9 cores will be enough for P3D. And I'll distribute add-ons between the cores on the left side of  1 1 1 1 1 1 1 1 1 0, each giving 2 cores (or 1 would be enough?) with Proceess Lasso.

Btw I've checked it: if I assign P3D to certain cores/LPs with AM in Prepar3D.cfg, then in Process Lasso I can give Prepar3D.exe ALL cores (in the Affinity rulles) and yet it will be running only on certain cores according to AM I set in JOBSCEDULER.

Thanks again!

 

Edited by Dirk98

Share this post


Link to post
1 hour ago, Dirk98 said:

If I could only understand what exactly Vaasudeva Steve meant by "the main process" in context there I'd be able to solve this charade. :biggrin:

Anybody?

Thanks!

Here is the context as I understand it.

When FSX was first released, it ran entirely on one core.

At the same time, Intel was releasing the first quad core CPUs  (Q6600) and the user community demanded that the Microsoft Aces team make better use of these idle cores.

Then FSX SP1/SP2 were released, they moved some of the scenery loading to the idle cores, so the original (main) load was reduced somewhat.

Then P3D V1/2/3/4 came along and the LM team continued the effort to offload more work off the main core, and put the other cores to work.

Fast forward to P3DV4:  the main load is still dominant, but a secondary load has now been offloaded to the next core (clearly visible in task manager if you run fps at unlimited). Scenery loading will use whatever cores are left.

 

  • Upvote 1

Bert

Share this post


Link to post
3 minutes ago, Bert Pieke said:

Here is the context as I understand it.

When FSX was first released, it ran entirely on one core.

At the same time, Intel was releasing the first quad core CPUs  (Q6600) and the user community demanded that the Microsoft Aces team make better use of these idle cores.

Then FSX SP1/SP2 were released, they moved some of the scenery loading to the idle cores, so the original (main) load was reduced somewhat.

Then P3D V1/2/3/4 came along and the LM team continued the effort to offload more work off the main core, and put the other cores to work.

Fast forward to P3DV4:  the main load is still dominant, but a secondary load has now been offloaded to the next core (clearly visible in task manager if you run fps at unlimited). Scenery loading will use whatever cores are left.

 

Awesome, Bert!

Also see the post Steve made while you were writing this.

 Thank you very much.

Edited by Dirk98

Share this post


Link to post

Lastly, LM has moved work from the CPU to the GPU (video card), so the net of it is that you get better performance out of P3DV4 even on the same CPU, if you have a fast GPU (like a GTX1070+).

  • Upvote 1

Bert

Share this post


Link to post
11 minutes ago, Dirk98 said:

Btw I've checked it: if I assign P3D to certain cores/LPs with AM in Prepar3D.cfg, then in Process Lasso I can give Prepar3D.exe ALL cores (in the Affinity rulles) and yet it will be running only on certain cores according to AM I set in JOBSCEDULER.

Thanks again!

 

Of course it would - as far as P3D is concerned it still has all cores. And that's irrespective of how many are assigned in PL - if you give it two it sees just two side by side and accordingly the AM you can put in the config is restricted to such. but why would you give it all cores in Process Lasso, or indeed run another process where it's not needed? Instead forget PL for P3D just use Prepar3D.cfg.


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