Process Lasso, Vulcan and multi threading/multi core access

Started by Pokeyoats, January 15, 2019, 03:25:28 PM

Previous topic - Next topic

Pokeyoats

Good Day,

I was wondering if someone could advise me of this scenario. As a flight simmer, I use Process Lasoo to great affect with these sims that seem to be very intent on using one CPU.

Without waffling on, with a lot of flight simmers, Process lasoo is essentially used to move plug-ins and in the case of VR, the server applications etc. onto cores whilst moving the main flight sim executable to a core that is least used (using affinity).

As of today, Laminar Research just released X-plane 11.30 which now incorporates the Vulcan API which is renown for its multi-threading ability.

My question is, does anyone have experience with the Vulcan API and process lasso. Should I undo all of my prior work with affinities and let Vulcan attempt to do it’s thing or is there any advice that someone could give who perhaps has experience with Vulcan and process lasso affinities and could kindly advise me.

Thank you kindly,
Jere Lawrence

Jeremy Collake

I don't have any guidance, though hope you do hear from the someone who does, and/or update this thread with your experiences.

I would be curious to hear just how multi-threaded it now is.

Most likely, aside from any theory, it will take experimentation to know what settings are appropriate for the X-plane 11.30 update. And these could vary by hardware.
Software Engineer. Bitsum LLC.

edkiefer

I don't have direct experience with Xplain engine but many flight sims are using older engines and you will find D3d rendering is on one core many times.
Now with Vulcan or Dx12, being low-level API they can be coded to use many threads/cores for what was limited before.

What I would do is remove any affinity settings you have, run the sim only (no VR or other 3rd party apps) and monitor usage across the free cores you have. that should give you a good idea of how to set affinity if it needs it now.
Bitsum QA Engineer

Pokeyoats

Wonderful suggestions,

I am turning off all the affinities now and testing and will report my findings in this thread after I have.

Also, for anyone stuck with Prepar3d or even X-Plane up to 11.26 Process Lasso is completely necessary to have your sim run over 20fps, in fact, I get 40-60 using Process Lasso affinities.

The trick is as simple as putting plug-ins (SkyForce, Active Sky etc.) forced onto one core, and then dedicating at least one (but up to remaining) cores to the flight sim, I can even use this technique with VR games by moving the Oculus server onto it's own core and not letting the game/app access (what I refer to as) the "ancillary processing core".

This seems to also dramatically help with CPU temp as well by about 5C.

edkiefer

Cool, do report back your findings, I will be interested in the results.
Bitsum QA Engineer

Pokeyoats

Well, the findings are very interesting, and possibly not the best news for Bitsum (though Prepar3d is still a hot mess that needs Process Lasso).

Before, if you didn't disable CORES 0 and 1 X-plane lost 8-10 FPS, significant in the flight sim world.

Now, it seems that Vulcan is as impressive as people say. With all cores enabled the application (X-plane) is distributing 35 threads and average CPU is 30%.

If I disable ANY core, even the fake hyperthread core, CPU utilization goes down by about 2-3% and a frame rate drop is visible from the counter inside X-plane.

That said, it appears 11.30 breaks a very important script for VR called 3jfps so for people like me that relied on it's LOD abilities to get 45fps, are only seeing 30 now. Albeit, that would have been 19-20fps in the same scenario prior to the Vulcan re-code

I do hope this info helps someone, or even better, if I'm wrong and someone has a totally awesome solution for getting those frames up.

BTW, I pretty much use the disable cores 0 and 1 methodology for most games and there is almost always (I guess except for Vulcan) an impressive increase in performance.

Thank you kindly.

edkiefer

Quote from: Pokeyoats on January 16, 2019, 08:06:41 PM
Well, the findings are very interesting, and possibly not the best news for Bitsum (though Prepar3d is still a hot mess that needs Process Lasso).

Before, if you didn't disable CORES 0 and 1 X-plane lost 8-10 FPS, significant in the flight sim world.

Now, it seems that Vulcan is as impressive as people say. With all cores enabled the application (X-plane) is distributing 35 threads and average CPU is 30%.

If I disable ANY core, even the fake hyperthread core, CPU utilization goes down by about 2-3% and a frame rate drop is visible from the counter inside X-plane.

That said, it appears 11.30 breaks a very important script for VR called 3jfps so for people like me that relied on it's LOD abilities to get 45fps, are only seeing 30 now. Albeit, that would have been 19-20fps in the same scenario prior to the Vulcan re-code

I do hope this info helps someone, or even better, if I'm wrong and someone has a totally awesome solution for getting those frames up.

BTW, I pretty much use the disable cores 0 and 1 methodology for most games and there is almost always (I guess except for Vulcan) an impressive increase in performance.

Thank you kindly.
Thanks for the feedback, It very well totally up to the DEV for how they implement Vulcan in their sim.
I would give them time, it might take a few updates to get things optimized, on their end.

PS: there is no bad news here, you have to judge this as totally new graphics engine IMO, though I am not too familiar with Xplanes the concept should stand.
Hopefully, you will be able to tweak it more once more details are found.

Also, what CPU are you running?
Bitsum QA Engineer

Globespy

I'm really interested in learning what you are currently doing with PL for your flight sim prior to vulkan.

I do a lot of iRacing which seems like it's identical in the way it utilizes the PC - pretty much only 2 cores with one core doing the vast majority of the work (physics).
I also use VR exclusively so I'm extremely interested in this part of your message:

"The trick is as simple as putting plug-ins (SkyForce, Active Sky etc.) forced onto one core, and then dedicating at least one (but up to remaining) cores to the flight sim, I can even use this technique with VR games by moving the Oculus server onto it's own core and not letting the game/app access (what I refer to as) the "ancillary processing core".

Moving the Oculus runtime/server to it's own core(s) would absolutely free up resources on the main core that the iRacing simulation uses, so how to go about this is of much interest to me and I appreciate your feedback!
How can you tell which cores are being used by the sim/VR in PL? Or do simply force the sim to use cores 1& 2 exclusive and VR to say cores 5-6 exclusively?
Not sure about plug-ins as iRacing does not allow 3rd party plugins?

I asked this question in another thread (https://bitsum.com/forum/index.php/topic,8547.0.html) but then happened upon this and hoped the OP could detail how he currently uses PL to optimize for DX11 and 2 cores.

Thanks.

Globespy

Why would you disable cores 0 and 1 for all games and get performance boost?

Is this so you leave those first 2 cores alone for Windows and other processes?

Thanks!

edkiefer

Quote from: Globespy on January 24, 2019, 04:20:21 PM
Why would you disable cores 0 and 1 for all games and get performance boost?

Is this so you leave those first 2 cores alone for Windows and other processes?

Thanks!
I can't talk for the OP but if you have say 8 core system and you want to run the game and another software w/o thread clashing (say you want to play a game and stream it all on one system).
So you might limit the game to 4-6 cores and run streaming software on 2-4 cores, you will have to experiment to get a good balance.
This same micromanage can be used for other uses like OP.
It's just a matter if you have enough cores to do it for it to be worthwhile.
Bitsum QA Engineer

Globespy

So if I know a game only uses 2 cores and I have 6c/12t CPU then I could select CPU affinity to be 2-5 which would leave the first core and it's logical core free to be used by Windows and dedicate the 2nd and 3rd physical cores and their respective logical cores for the game?

edkiefer

Quote from: Globespy on January 24, 2019, 04:52:49 PM
So if I know a game only uses 2 cores and I have 6c/12t CPU then I could select CPU affinity to be 2-5 which would leave the first core and it's logical core free to be used by Windows and dedicate the 2nd and 3rd physical cores and their respective logical cores for the game?
Yes, try it an see :)
There are some games/sims that don't like messing with process settings so you just need to try and see if it works (it should for the most part).
Bitsum QA Engineer

Globespy

Ok, so seems to be ok, and PL is showing my settings.
However when I look at current affinity it's showing all cores, NOT the ones I selected?

Any ideas?

Jeremy Collake

Try checking 'Options / Forced mode'. That is necessary for apps that set their own CPU affinity.
Software Engineer. Bitsum LLC.

Globespy

nope.
same result, it still shows 0-11 in current.
Even if I try to disable hyper threading it does the same thing - the 'current' doesn't change.

Any ideas?

edkiefer

Must have some kind of anti-tamper coded into it.
Just to make sure, try setting something simple like notepad to 1 core and see if that works, or your web browser.

Edit: unless they changed something PL should be able to do it.

https://www.reddit.com/r/iRacing/comments/4b9wgv/major_development_in_the_search_for_a_solution_to/
Bitsum QA Engineer

Globespy

seems like they have updated Anti-Cheat Software software (Easy Anti Cheat) that is the cause, although this seems somewhat extreme as I can't understand why blocking CPU core affinity would have much to do with in game cheating?

Seems that the same software is used for the title Fortnight as it's blocked players setting CPU priority - seems they have found a workaround (registry) but I'm worried that this could be detected and considered cheating?
I pay a LOT to be an iRacing subscriber and can't afford to lose my content if they think I'm 'cheating'.

Here's a link to what users have done in Fortnight (this just set CPU priority to high, not sure about setting specific cores?), let me know what you think and if there's anything PL can do to work around this without registry hacks.

https://www.epicgames.com/fortnite/forums/bug-reports/save-the-world-aa/202719-easy-anti-cheat-preventing-me-from-setting-cpu-priority-to-high-in-fortnite?p=316149#post316149

And here is how they do it - youtube video:

https://youtu.be/o4b3l93wgnU

Globespy

Looks like Easy Anti Cheat has a list of approved applications (white list).
Perhaps you guys could reach out to them and get added to that?

edkiefer

Quote from: Globespy on January 25, 2019, 01:00:24 PM
Looks like Easy Anti Cheat has a list of approved applications (white list).
Perhaps you guys could reach out to them and get added to that?
From what you have shown, the issue is not PL but you are trying to alter CPU affinity for there game. You could do same in task manager (though only temporary ).

Thanks for the info though, not sure why they stop CPU affinity and CPU priority values.

PS: You can still work around this limit by setting affinity for the other process to limit its core to lowest usage core of the game.
Run the game while monitoring (graph) core usage with something like HWinfo64 for a while, then pick the lowest and set affinity for the VR process there.
That should help a bit.
Bitsum QA Engineer

Globespy

Thanks for the suggestions to set affinity for other processes (VR) to 'block' iRacing from using those cores.
More importantly, force the other processes to use specific cores.

But then iRacing could just choose to jump on those cores too and defeat the point?

Like I said, it's not iRacing - it's Easy Anti Cheat that is the problem here as it's been seen on multiple other titles.

edkiefer

That is why I said to monitor the core while playing the game and find the lowest usage for 2 cores and use them for VR.
Bitsum QA Engineer