A CPU can only do one thing at a time. Therefore, to multitask, the CPU is quickly switched between one task (application) to another. It switches between tasks so quickly that it appears that multiple applications are running at the exact same time, when in fact they are just taking turns sharing the CPU. For multi-CPU (multicore) systems, this is still true, it is just that there are more CPUs available to spend time executing tasks.
Process Lasso can adjust how applications share your CPU. By changing priority, you give one program precedence to the CPU, in case more than one application is in need of the CPU at the same time. By changing the 'CPU affinity', you can choose which CPU(s) an application is allowed to use.
These laymen terms of 'task' and 'application' translate, for Windows and most OSes, into threads and processes. A process (an application, or part of an application) is simply a collection of its threads (tasks). It is these threads that share the CPU(s).
ProBalance, which stands for Process Balance, is the name of our proprietary algorithm that temporarily lowers the priority of some background processes in an effort to keep your system responsive during high loads.
When your CPU is in a high load, even for multicore systems, the responsiveness of the foreground process (the one you are currently using) can be severely diminished. This is because the Windows scheduler doesn't give the foreground process high enough precedence over the background process(es) that are consuming so many CPU cycles. This is by design, so that Windows is completely fair to background processes and so the foreground process itself doesn't monopolize the CPU.
In the real-world, one often finds that background processes interfere with your ability to use the computer. Sometimes this is due to an error occurring in a background process, and other times it is simply because there is such a high load on the CPU. On a single CPU system a single thread running at normal priority can bring the computer to a near unrecoverable stall. You probably have experienced this before.. your mouse only moves once every second or so as the whole system grinds to a halt.
Process Lasso intelligently lowers the priority class of background processes when they may be interfering with system responsiveness. This doesn't really hurt background processes, as they still get a considerable amount of the available CPU time, but it helps the responsiveness of foreground processes tremendously. After all, usually it just takes a few CPU cycles to keep the foreground process's threads responsive. Taking these from the threads of background processes, when necessary, is hardly detrimental to them. Process Lasso is designed to be minimally obtrusive, lowering priorities only when appropriate, and making sure that the background processes still perform just fine.
Windows does give foreground threads longer time slices, in order to provide a 'foreground boost'. This boost is simply not sufficient when the threads of Windows to improve responsiveness during high loads. Other utilities that simply do a foreground boost in priority class are not nearly as effective.
With all the various scams out there, such as RAM defragmenters, it is natural for some users to be skeptical. The most common argument comes from those who have overconfidence in the performance of the Windows CPU scheduler. These people believe that *if* the Windows scheduler is written as it should be, then surely background processes can't substantially interfere with foreground processes. This argument is echoed particularly in non-Windows crowds who haven't experienced the real-world performance of the Windows CPU scheduler.
Sadly, the Windows scheduler doesn't give enough precedence to the threads of the foreground process to deal with many common real-world scenarios. To be clear, the scheduler does give the foreground process, and the specific foreground thread, some precedence over background threads. However, this increase is simply not enough, and does not dynamically scale to adjust for changing system conditions.
A runtime demonstration is provided in the next section. Before you express your public skepticism, we invite you to try the test below.
We include with Process Lasso a 'CPU eater' that you can test with. This CPU Eater creates a handful of threads all running at NORMAL priority. These threads simply use up CPU cycles. Now, if the Windows CPU scheduler behaved like you might expect, other running processes would get enough CPU cycles to remain responsive -- even while this CPU Eater is running in the background. Unfortunately, this isn't the result. Your computer's responsiveness will substantially degrade while the CPU Eater is simply running in the background! Now, see for yourself...
After installing Process Lasso, turn OFF ProBalance (or close ProcessLasso AND its core engine ProcessGovernor). Then invoke the start-menu shortcut to 'Run the CPU Eater for 60 seconds', to see how your computer behaves with ProBalance OFF. After completion of this first test, turn ProBalance back ON or restart Process Lasso. Now run the same test again. You will be amazed at the difference, no matter how many cores/CPUs your computer has!
Remember, the CPU Eater's threads are all running at NORMAL priority, and they aren't doing anything besides run in pointless infinite loops. No adjustments are made, we just let Windows handle it. Any application running on your computer has the potential to cause the same effect as our CPU Eater (TestLasso) did.
WARNING: As a precaution, we recommend saving all open documents before doing this test. Also, be sure not to reset your computer when your are testing the CPU eater without ProBalance. Your computer will start responding better again in 60 seconds. You agree to accept all risks in running the above test. There are no extraordinary risks, but your system is put to a heavy load, which can cause problems on systems that can not adequately handle heat dissipation. In general, perform this test at your own risk. We must say this, and you must agree if you plan to try this test.
The above simple test takes 2 minutes. Give it a try!A demonstration of the deficiencies in the Windows scheduler is easy. First, for the sake of simplicity, we'll start describing a system that has a single CPU. The demonstration is easily scaled to multiple cores, but it is easier to describe the concept for a single CPU system.
First, create a process that does nothing but run in an infinite loop, thereby consuming all CPU cycles available to it. We'll call this a 'CPU eater'. Now, launch this process as any other application, at a normal priority class. If the Windows CPU scheduler works as one would expect it to, the performance of other processes on the system, and the foreground process, shouldn't be severely impacted. Unfortunately, you'll find that this single process, running at normal priority, actually so starves other processes of CPU cycles that the system grinds to a near halt -- even termination of the offending process is very difficult. This is true even with the Vista CPU scheduler, despite its improvements.
To scale this argument up to multiple CPUs, simply allow the 'CPU eater' process to have multiple threads, or launch more instances of the CPU eater process. The same effect will be seen.
With Process Lasso's other great features, like default process priorities and affinities, you can really fine tune how your system performs. ProBalance is a great way to automatically improve your system's responsiveness, but if you desire even more tweaking, Process Lasso also gives you that power. No automated algorithm can replace intelligently chosen human tweaks.