Ignore child processes for default priority/affinity

Started by DAOWAce, March 01, 2020, 05:14:45 AM

Previous topic - Next topic

DAOWAce

So this problem has bothered me for many years and apparently I never bothered to create a feedback request for it.

Is there an option to ignore child processes for default CPU priority/affinity?  I tried to search through options but the only thing I found for it was related to ProBalance, which is not applicable.

To give an example, game launchers. If it's required to run them, I set the priority/affinity so they impact other processes less, which are far more important.  Ex:



From battle.net launcher, I launch a game, like Hearthstone:



It erroneously inherits the properties of the launcher, harming the game's performance if I don't realize it's happened (and I frequently don't realize it; which is why I changed stuff from 'idle' to 'below normal').  It's not set to have any default settings besides game mode.

The way I've worked around it for the last.. 8 years? is setting it to needlessly have a default priority/affinity to be what it should be if PL wasn't touching it.  This also adds useless entries cluttering the config.


So.. uh, after all this time, is there a way to already avoid this behavior in the program?   If not, could this option be added?

edkiefer

Quote from: DAOWAce on March 01, 2020, 05:14:45 AM
So this problem has bothered me for many years and apparently I never bothered to create a feedback request for it.

Is there an option to ignore child processes for default CPU priority/affinity?  I tried to search through options but the only thing I found for it was related to ProBalance, which is not applicable.

To give an example, game launchers. If it's required to run them, I set the priority/affinity so they impact other processes less, which are far more important.  Ex:



From battle.net launcher, I launch a game, like Hearthstone:



It erroneously inherits the properties of the launcher, harming the game's performance if I don't realize it's happened (and I frequently don't realize it; which is why I changed stuff from 'idle' to 'below normal').  It's not set to have any default settings besides game mode.

The way I've worked around it for the last.. 8 years? is setting it to needlessly have a default priority/affinity to be what it should be if PL wasn't touching it.  This also adds useless entries cluttering the config.


So.. uh, after all this time, is there a way to already avoid this behavior in the program?   If not, could this option be added?
Hi, As of right now there two ways to handle your issue.

1) Don't set launcher type apps manually to a priority/affinity and let Probalance do its thing with the option "Do not act on children of foreground processes" if needed.

2)The other is to micro-manage every process that is affected by whatever settings the parent launcher was set to (like you have been doing).

So you didn't miss any hidden settings, thanks for your request and feedback it will be evaluated.
This post will be updated with any changes.
Bitsum QA Engineer

DAOWAce

Quote from: edkiefer on March 01, 2020, 08:49:21 AM1) Don't set launcher type apps manually to a priority/affinity and let Probalance do its thing with the option "Do not act on children of foreground processes" if needed.
From my understanding, ProBalance only kicks in if it detects a non-'performance' application using a certain % of CPU, then restricts it.  Unfortunately, that's not something that typically happens with any of the game launchers unless it's installing a patch or actively displaying some web content (which may or may not be running in subprocesses, notably Chromium integrated ones), in which case the game wouldn't even be running (I also disable all auto-updates).

As I'm now on a 3950x it's kind of a moot point as a single CPU core is a measly 3% total system load and trying to set ProBalance to something so minuscule would defeat the point of it.   Arguably, even doing what I'm doing is a bit pointless with so much CPU headroom, but I just want to be absolutely sure there isn't any performance degradation from background processes and CPU time is directed to my games first and background apps last.  I have run into an instance with one title where background CPU load did cause performance issues regardless of how much of the CPU was free, so I know problems can occur, though it is fairly uncommon.

What I've got to really look into now is the CCX/CCD design of these Ryzen chips and how it impacts performance and what the optimal settings are for games.. but that's a whole other rabbit hole.  Woe is being an optimization freak.

Quote from: edkiefer on March 01, 2020, 08:49:21 AM
So you didn't miss any hidden settings, thanks for your request and feedback it will be evaluated.
Alright, so I'll continue the status quo.  Thanks for the confirmation.  I hope such a setting is feasible and easy to implement.

edkiefer

Quote from: DAOWAce on March 07, 2020, 12:01:06 PM
From my understanding, ProBalance only kicks in if it detects a non-'performance' application using a certain % of CPU, then restricts it.  Unfortunately, that's not something that typically happens with any of the game launchers unless it's installing a patch or actively displaying some web content (which may or may not be running in subprocesses, notably Chromium integrated ones), in which case the game wouldn't even be running (I also disable all auto-updates).

As I'm now on a 3950x it's kind of a moot point as a single CPU core is a measly 3% total system load and trying to set ProBalance to something so minuscule would defeat the point of it.   Arguably, even doing what I'm doing is a bit pointless with so much CPU headroom, but I just want to be absolutely sure there isn't any performance degradation from background processes and CPU time is directed to my games first and background apps last.  I have run into an instance with one title where background CPU load did cause performance issues regardless of how much of the CPU was free, so I know problems can occur, though it is fairly uncommon.

What I've got to really look into now is the CCX/CCD design of these Ryzen chips and how it impacts performance and what the optimal settings are for games.. but that's a whole other rabbit hole.  Woe is being an optimization freak.
Alright, so I'll continue the status quo.  Thanks for the confirmation.  I hope such a setting is feasible and easy to implement.
Probalance works on any background process that triggers over the CPU advance settings. It has nothing to do with non-performance processes, it doesn't know the type of process in use. It will not interfere with foreground processes and if in performance mode.
The only other way to do it in your above example would be set affinity like you did for the launcher and then have a set of affinity settings for each game.
Down side is setting all the games to this second set of values, but you can use a wildcard to simply path (example path > C:\Program Files\games\*.exe).
Bitsum QA Engineer

Jeremy Collake

At present, there are not any plans to deal with this type of inheritance issue. The code logic would become unwieldy. The user needs to be aware of these scenarios when creating rules. Therefore, prior guidance to either (1)  not set rules on a launcher, or (2) over-ride child processes with their own rules, is appropriate. There is no performance penalty to having more rules.

To nitpick on prior comments: ProBalance does exclude processes marked to induce 'Performance Mode', which is what the OP meant by "'Performance' application". That does not include auto-detected Steam games, though of course there is the aforementioned exclusion on the foreground process.


Software Engineer. Bitsum LLC.

gemmalyly

Windows doesn't provide a built-in way to directly set default priority connections unlimited or affinity settings for all processes, including child processes, without using third-party tools or writing custom scripts.