It is necessary to understand a little about how multi-tasking works. This first section is dedicated to that.
A process (an instance of a running application) has a collection of threads (tasks). This is what the operating system sees, and executes. It basically keeps a long list of threads that it doles out to the CPUs for brief spurts of execution (time slices).
A CPU can only do one thing at a time. Therefore, to multitask, the CPU is quickly switched between the threads of running processes. It switches between threads so quickly that it appears multiple processes are running at the exact same time, when in fact they are just taking turns sharing the CPU. For multi-CPU (multi core) systems, this is still true, except that there are more CPUs available for thread execution, thus allowing some true simultaneous execution instead of just concurrent execution.
When the threads of multiple processes need to use the CPU at the same time, the priority level of each thread is used to help the operating system's CPU scheduler determine which is more important. By temporarily lowering the priority of overly active background processes, your system is kept responsive even in the face of high CPU loads. Note that lowering the priority class of a process lowers the priority of all threads in that process. When acting on a process, you are essentially changing the base priority at which the individual priorities of all threads of that process are derived from.
Windows has a particularly bad problem dealing with processes that decide they want to consume every bit of CPU time they can get their hands on. This sort of 'CPU Eating' process running at the default normal priority class can bring the entire system to a stall, as demonstrated by our graphical demo below. It is this worst case scenario that Process Lasso was originally written to address. By temporarily lowering the priority of the offending process, your PC can be saved from a virtual stall. Later, it was found our software also has benefits in simply improving overall system responsiveness during periods of high CPU loads, in addition to solving the worst case scenario of a completely out-of-control process.
This does NOT mean you should go and reprioitize all your running processes, ranking them in importance to you. Let our carefully designed ProBalance algorithm do that automatically. Do NOT make manual priority adjustments unless you know what you are doing. It can cause more harm than good. We have written our software to operate safely and effectively in its default configuration, but can't say the same for custom tweaks made by the user.
ProBalance, which stands for Process Balance, is the name of our proprietary algorithm that temporarily adjusts the priority of running processes in an effort to keep your system responsive during high loads.
When there is a high load on the system CPU(s), the responsiveness of the PC can be severely impacted. On a single processor PC, it takes only one CPU hungry thread running at normal priority to bring the entire system to stall. Even high priority threads can get starved of CPU cycles by a CPU hungry thread running at normal priority. This problem is inherent to the design of the Windows CPU scheduler and general OS architecture. Sure, it seems like such a problem should NOT exist -- but it does, and its easily demonstrated (see 'skeptics' section below).
The casual user will often find their PC responsiveness diminished for brief periods of time (a micro lag). 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. You probably have experienced this before - mouse movement gets jerky and every action is terribly slow.
Process Lasso's ProBalance intelligently lowers the priority class of background processes when they may be interfering with system responsiveness. This doesn't hurt the performance of background processes since 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 responsive. Taking these from background processes, when necessary, is hardly detrimental to them. Also, the adjustment is temporary, so its undone as soon as system conditions change. 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 already applies foreground boosting, and gives the foreground thread longer time slices. Further increasing the priority of the foreground process and/or the specific foreground thread is not effective at all. Remember, giving a process a higher priority does not mean it will run faster. It simply means if several processes are active at once, it will have a higher precedence. However, if any single process has too high a precedence over other processes, as foreground boosting would result in, complications can occur. In fact, our research has shown that additional foreground boosting can cause a number of complications with OS components and various applications.
Be very wary of any utility that claims to boost PC performance by increasing the priority of the foreground process. These utilities are extremely easy to create, and yet another gimmicky thing people are trying to push. In some cases, the author of the program simply doesn't understand the CPU scheduler and why this is a bad idea. In other cases, companies don't care and are just trying to make a profit. In short, it is a very wrong solution and should be avoided at all costs.
Yes, it is. Multicore PCs are subject to the same sort of problem, except that it will take a greater number of badly behaved threads to affect system responsiveness. Our CPU Eater will demonstrate the problem even on multicore PCs. Of course, Process Lasso also offers an assortment of features other than ProBalance that are useful to multicore PC owners.
Absolutely NOT. Some programs out there encourage you to do just that, but it is dangerous. The authors of these programs are probably not aware of the dangers, or otherwise don't care. While Process Lasso supports setting default (sticky) priorities, it is only meant to be used under certain appropriate circumstances. If you aren't an expert, it is best to let Process Lasso's carefully designed ProBalance algorithm dynamically adjust process priorities as necessary.
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 normal priority threads can't substantially interfere with the performance of other normal (and above) priority threads. This argument is echoed particularly in non-Windows crowds who haven't experienced the real-world performance of the Windows CPU scheduler.
The truth is that, on a single CPU system, a single thread of normal priority can bring the entire PC to a near freeze! Even high priority threads can get starved of CPU time by a CPU hungry thread of normal priority. Yes, amazing but true. For multi-CPU systems, the number of threads required to bring the system to a complete stall is equal to the number of CPUs available. Don't believe us? Try our demonstration app, or write your own. Any thread that does nothing but eat up CPU cycles without restraint will demonstrate this phenomenon.
We have developed a 'CPU eater' that you can test Process Lasso 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 running! Now, see for yourself ...
If you wish, you can create your own 'CPU eater', or test similar utilities instead of ours. Some CPU Eaters out their raise their priority, because they don't realize that it only takes normal priority to 'do the job'. For those, be sure to turn OFF the option 'Options / ProBalance Settings / Exclude non-normal priority'. Normally, Process Lasso leaves high priority processes alone because it assumes they have raised their priority for a good reason.
Usage instructions:
Remember, if you don't install Process Lasso the test will simply show the deficiencies in the Windows CPU scheduler. You must install Process Lasso to see the benefits of ProBalance.
After installing Process Lasso, turn OFF ProBalance (or close ProcessLasso AND its core engine ProcessGovernor). Then start the CPU Eater 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 threads of the background process the CPU Eater launches 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 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.
Say a person does try Process Lasso, but then uninstalls it. What's left behind? Nothing. No permanent system changes were made, and no files remain behind. Just like you, we don't like 'junk' left behind after an uninstall, and we especially don't like software that makes permanent system configuration changes that aren't undone on uninstall. As a side note, Process Lasso makes NO adjustments to your system configuration, it simply manages processes ONLY when its core engine is running. The advanced tools included with Process Lasso, TweaskScheduler and the Multimedia Scheduler Configuration Utility DO make permanent changes, but backups are created first to ensure you can revert to your previous state.
Process Lasso was created with one primary rule 'Do no harm'. Therefore, its ProBalance algorithm only makes changes believed to be entirely safe. Further, when a change is needed, it makes the most minimal one possible. We look at this as a conservative approach. We've seen other software not be so kind, believe it or not. Beware of gimmicks out there that boost priorities carelessly. Many of these gimmicks boost the foreground process priority to High, which is not only unhelpful, but is also unsafe. Try those utilities with our demo - or write your own CPU Eater if you don't trust ours, it couldn't be more simple to create. In C, a 'while(1);' (infinite loop) is all it takes...
When you go to make manual changes to certain system processes, or enable certain features of Process Lasso, warnings are shown that inform you of possible risks. However, we can't possibly account for every conceivable user induced error and/or software environment, so its possible custom modifications to Process Lasso's configuration could cause unforeseen negative consequences. We furthermore can't warn of all possible risks, so we simply recommend NOT changing the default settings unless you are an expert. Carelessly changing the priority class of processes is potentially determinantal to the stability of your PC. We recommend you just let Process Lasso's ProBalance algorithm do its job, unless you know what you are doing.
Since Process Lasso allows such advanced configuration tweaks, we must issue a legal warning at install (a EULA). As always, you assume all risk and liability for any damages, tangible or intangible, resulting from the use or misuse of our software. If you do not agree with that, then we can not allow use of our software. The full EULA is presented prior to install. If you can not read AND agree to it, then you must cancel the install.
The issues that Process Lasso's ProBalance addresses are well documented throughout the internet. Since we may be perceived to have a bias (though we are biased only towards the truth), we decided to publish some of this third party research. Here are some quick links, and we'll add more soon.
"I should also note that Windows has other scheduling complications, such as "foreground" and "background" tasks [...] However, the bottom line, in my humble opinion, is that the operating system is more concerned in ensuring that a task that is not ready to run does not, than making sure all tasks get a fair shake. [...] We can, however, detect thread and process CPU utilization, and help the operating system to adjust the prioritizations."
-(c) Tim Murgent of TMergent Technologies
"One process that takes up 100% of the CPU time may slow the other applications to snail speed for example, despite the fact that modern OSes use preemptive multitasking."
-(c) Johan De Gelas, AnandTech
To prevent tasks from hogging the CPU and thus starving other tasks that need CPU access, the Linux 2.6 scheduler can dynamically alter a task's priority. It does so by penalizing tasks that are bound to a CPU and rewarding tasks that are I/O bound. I/O-bound tasks commonly use the CPU to set up an I/O and then sleep awaiting the completion of the I/O. This type of behavior gives other tasks access to the CPU.