Condition based Affinity/Priority change

Started by RayJones, June 18, 2011, 01:03:27 PM

Previous topic - Next topic

RayJones

Hi, I am a new user to "Process Lasso". The reason why I chose this product was to isolate a CPU core to be used only by a single process albeit a highly CPU intensive one lets say process P. And no other process can execute on that core lets say Core C. So CPU core C will always be available for any incoming thread execution of process P instantaneously.

So far I have been able to perform this successfully thanks to "Process Lasso" by manually changing the affinity of every process other than process P to use every core other than Core C. Then again manually changing the affinity of process P to utilize only core C. (Process P is designed to work in a single core/processor environment only).

I was wondering if "Process Lasso" can further perform this operation autonomously by detecting Process P at the time of its starting and changing the affinity/priority of all or only specific processes. Then reverting it back to previous state as soon as it detects the termination of Process P. Once again thanks for creating a wonderful software  :D.

Jeremy Collake

Although not currently implemented, there are plans to allow this via a new feature I am working on. I will reveal more when I am closer to completion.
Software Engineer. Bitsum LLC.

RayJones

Okay. Just to let everyone know that this method really works and boosts the performance of those program utilizing maximum CPU cycles many folds. If the process/program supports multiple cores, you simply isolate multiple cores and assign them to it.

Another bonus effect is your system doesn't hangup when the above said process is hogging up the CPU cycles cos they themselves have separate cores to continue running.

There have been lot of negative misconceptions about this method on the internet but they all fail as tested by me. I don't know whether anyone has named this method or not but if anyone knows please do reply to this thread.

Jeremy Collake

I agree that in some circumstances it could increase performance, particularly of primarily single threaded applications (which most still are, even if they utilize multiple threads). It would reduce core thrashing, and in systems with per-core frequency scaling, ensure the thread remains on a scaled up core. You are not the only one doing this, I have spoken to others who told me they are doing this, or something similar.

I doubt I will name this feature specifically, though who knows. Along with this, there will be a world of new possibilities.
Software Engineer. Bitsum LLC.

DeadHead

This, as well as the function in PL to avoid non-physical cores are quite interesting. I'd like to hear more about the specific applications people have tested that actually benefits from this. I find it rather complicated to test this myself to be honest! :)
Windows 10 Pro 64 (swedish) || Xeon 5650 @ +4 GHz || 24 gig ram || R9280 Toxic

Keefa

Quote from: DeadHead on June 19, 2011, 10:04:37 AM
This, as well as the function in PL to avoid non-physical cores are quite interesting. I'd like to hear more about the specific applications people have tested that actually benefits from this. I find it rather complicated to test this myself to be honest! :)

I would've been very interested in this, too. Too bad it never got people interested, I suppose.

BenYeeHua

Quote from: Keefa on December 30, 2012, 09:01:12 AM
I would've been very interested in this, too. Too bad it never got people interested, I suppose.
I has try on a single thread game with CPU bound, and getting less performance.
This is because the game having other thread to process sound, I/O etc, so it getting less performance to let the main single thread waiting. ;)
But it will be difference for some converter software(like convert to mp3) as they are only has a unstop single thread. and difference CPU with a bigger delay L2, L3 cache.

Jeremy Collake

Here's the thing: The Windows Scheduler is aware of 'fake' (hyper-threaded) cores - also called logical cores, though logical cores also include physical cores, so that isn't as descriptive.

Since it is aware of hyper-threaded cores, it tries to avoid them.

Does it do a good job of this? Who knows. From what I've seen, improvements can be had.

For CERTAIN it doesn't know what the user knows, so there are definitely times when this option is desirable. You are basically saying, "Keep this process's threads only on my top performing cores!".

Do NOT over do it though. Don't use this on more than a handful of simultaneously running applications, else the lack of logical core availability may cause its own performance or responsiveness issues.
Software Engineer. Bitsum LLC.

BenYeeHua

QuoteDoes it do a good job of this?
Maybe compare with linux, we will know the answer.
But we can only know which one is better for which software, not the best. :)

Jeremy Collake

Yes, each has their advantages and disadvantages. With linux, you can pick and choose which scheduler you want for specialized tasks. You have to recompile the kernel, but not that much trouble really.
Software Engineer. Bitsum LLC.

BenYeeHua

But the problem is, normal user are using Windows. ;D

Jeremy Collake

Yea, and thus there is a market for scheduler refinements like Process Lasso ;p
Software Engineer. Bitsum LLC.

BenYeeHua