About Process Priorities

Take me to Bitsum Technologies to get Process Lasso

    Other short blurbs
  • When CPU Affinity Matters
  • When HyperThreading Hurts
  • Windows NT 6+ I/O Prioritization

Process Priorities

Windows

In Windows, process priority classes are the base priority of all threads running in that process. The threads are offset themselves to an actual priority, but the process priority class defines the base setting. Raising a process's priority class does NOT make it run faster. Windows already has foreground boosting (as this concept is known) built in. Do not do this. Process Lasso does offer this feature because some users wanted it, but it comes with plenty of warnings.

Linux

In Linux, the process priorities are not classes, but actual priorities since it is more 'process' than 'thread' oriented. You can adjust the nice level, as it is known, via the renice command. This value is INVERSE to what you would think it might be. Higher nice values mean a less important process. The range is -20 (highest) to 19 (lowest).

Process Lasso's Process Balance Technology (ProBalance)

Index

  1. How is a CPU shared amongst all running processes?
  2. What is Process Lasso's 'ProBalance' technology?
  3. Why doesn't foreground boosting work?
  4. Is ProBalance useful on multicore PCs?
  5. Should I reprioitize all my processes, ranking them in importance to me?
  6. Why didn't Microsoft design the Windows CPU Scheduler 'just right' and handle these high load scenarios better? [for skeptics]
  7. Graphical Proof of Concept
  8. Third party links
  9. Frequently Asked Questions (different page)

How is a CPU shared amongst all running processes?

A process has a collection of threads (essentially running tasks). This is what the operating system sees, and executes. It basically keeps a long list of threads to which it dedicates the CPU(s) 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 all active threads on the system. 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 (running concurrently). 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 determine which should get the CPU next (which is most important). By temporarily lowering the priority class of overly active background processes, your system is kept responsive even in the face of high CPU loads. 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 from which the individual priorities of all threads of that process are derived from. In this way, the relative priorities between threads in a process are kept the same.

What is the problem?

Windows has a particularly bad problem dealing with threads that decide they want to consume every bit of CPU time they can get their hands on (a CPU bound thread). A single 'CPU bound' thread running at Normal priority can bring an entire single-CPU system to a stall, as demonstrated by our graphical demo below. Yes, it is true - believe it or not! 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. It was later discovered that, with a few refinements, our algorithm could improve system responsiveness during periods of high CPU loads - in addition to saving the PC from a worst case scenario.

Some schedulers, such as the default one of the Linux kernel, penalize CPU bound (CPU hungry) threads while rewarding I/O bound threads. This is similar to what ProBalance effectively does. You see, on Windows systems *most* threads are I/O bound. They give up their time slices pre-maturely as they enter a wait state for some type of I/O. Sadly, CPU bound (CPU hungry) threads also exist from time to time, and do a real number of the less greedy I/O bound threads.

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.

Why doesn't foreground boosting work?

First, for those who don't know, the foreground process is the process that owns the window that has keyboard and mouse focus. This means there is only ever one foreground process at a time. It is essentially the program you are currently working with. Some programs of lesser quality believe boosting the priority of the active foreground process is effective at increasing performance or responsiveness. The truth is that it does neither and more likely to do the opposite.

Windows already applies foreground boosting by giving 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.

What is Process Lasso's 'ProBalance' technology?

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 get totally 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.

Is ProBalance useful on multicore PCs?

Yes, it is. Because of all the multi-tasking we are doing, ProBalance still greatly helps responsiveness even on multi-core CPUs. For example, while building Process Lasso, and having virtual machines running (for testing).. the difference with and without Process Lasso is amazing on an x86 CPU. Multicore PCs are subject to the same sort of problem as single core CPUs, except that it will take a greater number of badly behaved threads to greatly affect system responsiveness. Of course, Process Lasso also offers an assortment of features other than ProBalance that are useful to multicore PC owners.

Multi-core owners will also find our default CPU affinity, watchdog CPU affinity change, and ProBalance CPU affinity change features useful.

Should I reprioitize all my processes, ranking them in importance to me?

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.

Proof of Concept

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.

Most Windows developers will tell you they are disappointed with the Windows CPU scheduler. They will tell you of a time when they had a bug that caused an infinite loop in a normal priority thread running in a process of normal priority class. Much to their dismay, their system was brought to a stall. They've seen this happen. They've stood in disbelief.

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.

Demonstration

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 ...

This is no trick! You can easily create your own 'CPU eater', or test similar utilities instead of ours. Some CPU Eaters out there raise their priority above Normal, because they don't realize that it only takes Normal priority to 'do the job'. For those, be sure to turn OFF the ProBalance option 'Options / ProBalance Settings / Exclude non-normal priority' or Process Lasso would just ignore them. Normally, Process Lasso leaves high priority processes alone because it assumes they have raised their priority for a good reason. Again, we try to act INTELLIGENTLY, which is the key to making good software. So, create your OWN. An infinite loop in any language. Don't take our word for it if you don't want to

This demo defaults to being 'heavy handed', but feel free to lower the thread count. It usually takes far,far fewer to induce an effect than is the default value! Also REMEMBER, the threads created here are background threads. Out of control *foreground* threads cause ever *more harm* since they get considerably longer time slices (depending on scheduler config or OS edition).

  • Download 32-bit CPU Eater
  • Download 64-bit CPU Eater (for Windows x64 OS only)

Usage instructions:

  1. Download and run the above link appropriate to your operating system (32-bit or 64-bit)
  2. It will automatically start the CPU Eater control application for you
  3. Press the START button to initiate the test in a background process running at NORMAL priority
  4. If you PC seems to freeze because Process Lasso's ProBalance is not active, WAIT and everything will return to normal after the test terminates in a minute (or however long you specified). We also temporarily increase the priority of the control application so that you will hopefully be able to press the STOP button to terminate the background process that is hogging CPU cycles. Of course, if Process Lasso is running and ProBalance enabled then you won't have this problem.

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!

How our test works

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.

Manual tweaks can help

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.

So how come no fix from Microsoft?

One reason for this is that the intended proper behavior of a Windows application is not what is seen in the real world. They are meant to do a brief burst of CPU use, then enter wait state. Instead, they often are poorly designed and end up in live-locked and other 100% CPU use situations. It is impossible for Microsoft to know for sure what application really needs that CPU and which doesn't. With a little 'market intelligence', a little logic, and some help from the user Process Lasso's ProBalance can do better -- saving your PC from a total stall or simply increasing responsiveness.

What's left after uninstall?

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.

A STRONG WARNING AND EULA

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.

Research and links (external and internal)

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.

  • Everything you never wanted to know about OS multi-tasking (and why out of control processes need priority adjustment)
    "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
  • Hardware Virtualization: the Nuts and Bolts
    "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
  • From a former competitor that popped up briefly:
    "Priorities and their purpose are often poorly understood. Usually the misapprehension exists that if a process is taking a long time to complete then, if anything, its priority should be increased with the intent to make it finish faster. In most cases the CPU is spending near to all of its time executing the process anyway, so increasing the priority is only going to tell the scheduler to do what it is already doing. It may seem paradox but it is in fact more sensible to reduce the priority of the busy process so that the system is prepared to let other processes have some time thus allowing them to remain functional. In most cases other processes will not be using a significant amount of the CPU's time and allowing them to execute when they want to will not slow the busy process by any notable amount. Computer applications simply have to be idle practically all of the time in order for them to react quickly when the user interacts with them. Therefore, allowing a well behaved application to continue to respond in such a way will not take a significant amount of time away from the busy process."
    -(c) Peter Ball
  • Quote from Inside the Linux scheduler (IBM) - an example of another OS scheduler's attempt to address this
    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.
    Related articles
  • The Linux Scheduler (a similar scheduler to Windows, but tweaked differently)
All content (c)2011 Bitsum Technologies and Jeremy Collake. Windows, Windows XP, Windows 2000, Windows Vista, and Windows 7 are registered trademarks of Microsoft Corp.


Process Lasso FAQ

Process Lasso

[ main index ]

Clearing up Misconceptions

Misconception #1: Process Lasso is only for older computers

Process Lasso is as useful for new computers as it is for old ones. Aside from all the automation features, ProBalance continues to be efficacious no matter how many cores your PC has. It is especially important now that processors have quit becoming substantially faster each generation and instead are being multiplied in count (parallel processing). At Bitsum, we continue to find new real-world cases where ProBalance is amazingly efficacious at keeping the PC responsive in the face of high loads. For instance, it works great when saving multimedia in Sony Vegas. Just remember that you may need to 'click away' from the active appliction to have ProBalance act on it, due to the default exclusion on the foreground process.

Misconception #2: Process Lasso is yet another task manager

No. Process Lasso is NOT a task manager replacement. It has some task management capabilities, but those are a compliment to its primary functions of automation and optimization.

Misconception #3: A user needs should set default (persistent) priorities on their processes to rank their importance

NO. You should NOT re-prioritize all your processes, ranking them in importance to you. Doing that is risky and detrimental to PC performance. Just let Process Lasso's ProBalance algorithm do its job.

Misconception #4: Other optimization software increases the priority of the foreground process. Does that achieve the same effect?

Absolutely not! These authors only want to sell their wares. They don't care about efficacy. If they did, they'd know that foreground boosting is already done by Windows and additional foreground boosting is ineffective and detrimental to PC performance. Do NOT trust any application that does this. They do it because it's the most simple thing to implement, and it sounds good, even though it is terrible in practice. Also, note that raising a process's priority class does *not* make it run faster.

Process Lasso's ProBalance has been carefully tuned for over a decade in the real-world. Our algorithm works, and we've proven that without CPUEater Demo and real-world examples like Sony Vegas. Best of all, the conservative nature of our algorithm, along with it's very marginal adjustments, ensure it's safe, as well as effective. Don't trust your PC to bad imitators!

Frequently Asked Questions (FAQ)

Questions

  • What versions of Windows is Process Lasso compatible with?
  • What is ProBalance?
  • Is the free build completely free?
  • What are the differences between the Pro build and the Standard/Free build?
  • How do I Activate Process Lasso Pro with my Activation Code?
  • What is a 'process'?
  • What is 'Restraint'? (new)
  • What is Gaming Mode, is Lasso useful for Gaming? (new)
  • How do I limit a process to a specific CPU percent?
  • Some application is still bringing my system to a crawl, what can I do?
  • Where is my security software process(es)? I do not see them listed!
  • Why does Process Lasso show less total RAM than I actually have?
  • What do the Virtual Memory metrics mean?
  • Why don't you recommend using the trim virtual memory function?
  • What are the unattended setup details (silent, command line)?
  • If I stop Process Lasso Core Engine, what does it mean?
  • What is the difference between stopping the Core Engine and shutting down Process Lasso?
  • How do I assign a shortcut key combination to show the Process Lasso main window?
  • Why isn't Process Lasso's ProBalance acting on the processes associated with my anti-virus software?
  • Will Process Lasso's ProBalance adversely interfere with any of my software?
  • What is the white line I sometimes see on the graph?
  • Process Lasso does not seem to take any action to 'restrain' overly active processes. What is going on?
  • What does it mean when the system tray icon changes to the traffic light?
  • Does Process Lasso's ProBalance out-of-control restraint slow down processes?
  • Should I use foreground boosting? (and other info about)
  • Process Lasso says 'Core Engine Not Running'. What does that mean?
  • What is a Power Profile?
  • Can Process Lasso help to reduce DPC latency? (new)

First, its worth noting that there's a real problem here with jargon. Non-technical users may seem overwhelmed. I'll try to switch between technical jargon and layman terms to help give some contextual reference that may aid in deducing the meaning of jargon.

If the question you have isn't here, or isn't answered well enough here, send an email to support@bitsum.com

Is the free build completely free?

Yes, home and academic users can freely use it for as long as they want. However, after the product has been installed a while, a couple features are disabled and some nags are shown to encourage the user to upgrade to Process Lasso Pro. These nags are tolerable, as they are meant to be reminders, not to annoy. Even after this point, the software is still quite usable and not by any means crippled. These actions help us to continue to publish a free edition. We encourage you to give Process Lasso a try. It may be just what you need, and the Pro build may be well worth the price of a couple cheese burgers.

What is the difference between the free and Pro versions of Process Lasso?

The differences are described here.

How do I Activate Process Lasso Pro with my Activation Code?

Please see the 'Help' menu or About box. If you do not see options to Activate there, then the product is already activated.

What exactly is a 'process'?

When you run a program on your computer, it creates a process. Every program you have running is represented by a process. When you have multiple copies of a program running, it has multiple processes. For instance, if you were to run Microsoft Word, it would create a process named 'msword.exe'. Each process has its own memory and threads (you can think of threads as tasks for your CPU to execute). Furthermore, each process is isolated from other processes, so that a crash in one program won't cause a crash in another.

What is ProBalance?

ProBalance is an algorithm that makes a temporary, marginal adjustment to the priority class and/or CPU affinity of a process found to be monopolizing the CPU.

ProBalance itself doesn't necessarily make your PC faster. Instead, it helps to retain your PC's responsiveness during high loads. That means fewer jerky mouse movements or unresponsive applications. It won't, however, boost the overall performance ceiling of your PC. That's limited by hardware.

To see an example of ProBalance in action, try our CPU Eater demo app, or with your own high CPU load test using an application like Sony Vegas. To demo with Sony Vegas: Load, then save a video. During the save, click away from the app to go use your PC (and let ProBalance act). Without ProBalance enabled, your PC will barely be responsive. With ProBalance, it'll be as responsive as ever. You must click away from Vegas because of the foreground exclusion of ProBalance. It doesn't act on the foreground process by default, one of many conservative settings.

What is a 'ProBalance Restraint'?

By default, it is marginal, temporary reduction in the CPU priority class of the offending process(es).

Is Process Lasso recommended for gaming?

Absolutely! Process Lasso is great for games

Process Lasso's Gaming Mode configures ProBalance and the Power Profile in such a way as to be best equipped to run games or other high-demand applications.

Further, as of Gaming Mode 2 in 2015, a special power profile is used that disables certain CPU power saving features, such as core parking and CPU frequency scaling (down-clocking on idle). This ensures that your CPU is always ready to execute code!

Some processes are missing, how can I fix this?

You need to check the menu item 'Main / Manage processes of all users'.

Why does Process Lasso show less total RAM than I actually have?

Process Lasso shows the total amount of usable RAM available to the OS. If this is less than you have installed, it may be because some is dedicated to your on-chip graphics adapter and/or your system can not address all avaialble RAM (e.g. a 32-bit Windows edition not having enough address space). You can verify this in the Windows Task Manager (Ctrl+Shift+Esc). In the 'Performance' tab, check to see the Total amount of physical memory it says you have. That should match what Process Lasso shows. We figured that you know what you have installed, and it would be better to tell you how much is actually available for use by Windows.

How do I keep an application below a certain total CPU % use

So you want to keep a process limited to using a certain amount of CPU time or percent of available total CPU time? If you have a single core processor, forget it. Although advanced options like Process Lasso's Hard Throttling are available, they are not recommended at all! There is no way to 'toss out' instructions that need executed. In a best case scenario, you can suspend the threads of a process for a short period of time before resuming them. However, they would then continue to work on whatever they didn't get finished before being suspended. Further, this is very unnatural behavior and can cause all sorts of problems. Applications simply are not designed to be paused and resumed, and it does not even end up reducing the overall workload that *must* be accomplished.

Fortunately, there IS something you can do. If you have a multi-core CPU, you can limit a process's CPU affinity to specific cores, there-by enforcing a hard limit on the total CPU consumption of the process. For example, on a quad-core system, if you were to limit a process to a single core, you would impose a 25% CPU consumption limit. When changing affinities, be sure to apply them carefully and selectively. Some system processes may respond badly to CPU affinity changes, though most applications will be fine.

Some application is still bringing my system to a crawl, what can I do?

There is a setting that EXCLUDES the active foreground process (the one you are using, that has keyboard and mouse focus) from ProBalance restraint. It is in Options / ProBalance options. It could be the application was not restrained because it was in the foreground? If this is NOT the case and the process WAS lowered in priority, then there is some other bottleneck that Process Lasso can not address.

You may also wish to try a Default Priority of Below Normal for the offending process. This is often very successful, safe, and effective. It does not typically diminish performance of the application UNLESS you have a lot of other stuff going on as well (a lot of contention for the CPU).

Where is my security software process(es)? I do not see them listed!

During our real-world research, we discovered that some anti-virus software has tamper detection mechanisms that are 'triggered' by simply 'looking at' their process. Yes, simply looking at them - something I've verified with their own engineers. We are working on some work-arounds so that these are listed again for v6, but the thing is that these processes should not be *touched* by the end user. This would not be a problem, BUT these software emit not one 'tamper detection' log event, but thousands and thousands -- to the point of slowing down some PCs. Don't ask me why they emit thousands of duplicate tamper detection events, you can ask them that . Anyway, to AVOID this, we do not even touch certain processes.

You may say, but my security software uses a lot of CPU resources, I need to tame it!

Indeed, it does use a lot of CPU and I/O resources, *BUT* it should NEVER be tamed. By design the real time scanners run at the highest available priority already - even if their priority class doesn't show that, the thread priority is surely real-time or highest. Why? Because you WANT whatever the scanner has to do to be completed as quickly as possible. Other processes must WAIT for the 'scan' to complete. Thus, you never want to interfere with this process, NOR do you want to try 'optimize' it yourself, as you can seriously jeopardize the synergy of your PC.

Remember, Process Lasso was *never* meant to be a full-fledged task manager. It is an automation and optimization tool. Thus, we focus on THAT, and that alone.

The good news? ProBalance has been reported by many to help a bit with system responsiveness, *even when* your security software is acting as a counter-weight against it. In other words, it does improve the situation, it just can't magically fix the overhead inherent in your security software.

You may instead focus on CPU affinities. These allow you to limit the breadth of a processor, so that it can only consumer x/Y CPU cores available. This will, in effect, limit its CPU % as a total of avaialble CPU cycles. It will not, however, limit the CPU allocation on the processors under which it is placed. This may not also always end up as optimal as you think, and definitely do NOT try this on a large scale basis (e.g. trying to categorize all processes on specific cores). The OS Scheduler does this, and is pretty smart, so should be left to its work. It knows to keep a thread on a core as long as possible, but sometimes move it to prevent too much load on one core for too long (causing excessive thermal problems). That said, there is room for optimization, but be careful.

We do offer actual 'hard' CPU throttling within Process Lasso, but it is very unnatural for Windows and for Windows applications. Therefore, it only works in limited cases.

What do the various Virtual Memory metrics indicate?

Virtual memory is an abstraction layer, allowing what you (and processes) think of as 'memory' to be stored in any combination of phsyical media and shared between processes. It has numerous benefits. For one, it lets you have a very large amount of memory, since virtual memory is limited only by the space available on the page files' storage medium (hard drives or SSDs). Secondly, it is easily shared since duplicated memory can simply 'point' to the first copy of it. There are many other benefits as well.

When virtual memory is accessed that is not in RAM, a hard page fault occurs. At that point, it is moved into RAM. When a virtual memory page in RAM is unused for a long period or RAM is needed elsewhere, that page is moved back out to the page file. All this is transparent to the process. The process simply sees and accesses memory at address X, and the OS makes sure it is in RAM (if not already). Ideally, you WANT all frequently accessed virtual memory to be in RAM, so it doesn't have to be read from the much slower page file. Memory that has not been recently referenced will be moved out of RAM by the virtual memory manager as necessary. There is no need for you to force this.

Commit Charge can be best defined as the amount of virtual memory committed to that application (whether it resides in RAM on the page file). This in in contrast to the 'Working set', which excludes memory that is swapped out.

Working Set is the amount of virtual memory actively held in RAM for that process at the current moment.

Private Bytes is the amount of virtual memory in the process space that is not shared from some other process. When virtual memory pages are duplicated, they can be shared between different processes in memory.

Private Working Set is the amount of RAM used exclusively by this process. This value is normally equal to the Commit Charge, but could vary if the process is sharing a lot of its memory with another process (i.e. another instance of itself). Google Chrome is an example where this will vary a lot. This metric requires more CPU cycles to compute, and is therefore not recommended to use unless you absolutely must know it. You will see a warning when enabling it.

Total Virtual Memory Usage is the sum of all virtual memory mapped into a process's address space. This value will seem huge, but it includes stack space and other reserved virtual memory that isn't used. Most users should ignore this field.

If I stop Process Lasso Core Engine, what does it mean?

The 'core engine' (processgovernor.exe) is what actually 'does the work'. It applies ALL automated process rules, including ProBalance, default priorities, default affinities, disallowed processes.. everything. So, you can use the GUI (processlasso.exe) to create/edit process and settings, then close it completely when not needed. This minimizes resource usage. The core engine is silent though (not even a system tray icon), but it does write all its actions to a log you can view later with the GUI.

What is the difference between stopping the Core Engine and shutting down Process Lasso?

When shutting down Process Lasso, you are asked if you also want to stop the core engine. So, shutting down allows you to either close only the GUI, or both the GUI and core engine.

How do I assign a shortcut key combination to show the Process Lasso main window?

While there isn't a built in shortcut key to show the Process Lasso main window, you can easily add one yourself. To do this, right click on the Process Lasso start menu shortcut and select 'Properties'. There is a field 'shortcut key'. Using that field, you can assign Process Lasso a shortcut key (e.g. CTRL+ALT+K). Now when you press that shortcut combination, you'll see Process Lasso's main window pop up.

Why isn't Process Lasso's ProBalance acting on the processes associated with my anti-virus software?

Since anti-virus software processes are sensitive to priority adjustments, common anti-virus software are excluded from restraint. Consider the real-time scanner of your anti-virus software. Whenever a file is opened, the process opening the file must WAIT for the scanning to complete. So, you don't want to lower the priority of the real-time scanner, as that would not make things happen quicker. In fact, it would have just the opposite effect. Other software isn't as careful as Process Lasso, but we wanted to DO THINGS RIGHT! .. even if it means sometimes people think that the product isn't not working because it skips a process that is using a lot of CPU.

If your anti-virus software isn't on our hard-coded exclusion list, that's no big deal because it probably would never get acted on anyway. However, if you see Process Lasso's ProBalance acting upon it, then you may want to exclude it from restraint. Most of the time, this isn't an issue since ProBalance would only act on a non-excluded critical process of anti-virus software under rare conditions. In the majority of cases, the default settings themselves implicitly exclude critical anti-virus processes.

Will Process Lasso's ProBalance adversely interfere with any of my programs?

Out ProBalance algorithm is designed to be safe above all. Its adjustments are very conservative, marginal, and safe. Additionally, after years of real-world testing, we've identified and fixed any specific interoperability concerns that do exist, and ensured our algorithm is well tuned for real world user loads.

What is the white line I sometimes see on the graph?

This line represents the CPU history of the process(es) you have currently selected. Yes, this is not indicated on the graph legend.

Process Lasso does not seem to take any action to 'restrain' overly active processes. What is going on?

By default, Process Lasso excludes the foreground process (the one that has keyboard and mouse focus). You should click to another window to allow Process Lasso to restrain the process. Alternatively, you can turn off exclusion of foreground processes. The occasional restraint of foreground processes won't hurt anything since any active background processes will also be restrained at the same time. Of course, by restraint we simply mean temporarily lower the priority class, not any sort of actual limit on CPU usage (see ProBalance docs).

Does Process Lasso's ProBalance out-of-control restraint slow down processes?

No. Process Lasso 'restrains' processes by temporarily lowering their priority. This simply allows other processes more of a chance to use the CPU, IF there are any processes needing the CPU. If there aren't, and until there aren't, the restrained process is still able to consume as many CPU cycles as are available to it. Therefore, a restrained process doesn't really slow down, though it can now yield to another process like a nice citizen of your computer. That little yield will make a big difference in responsiveness, but not a big difference in the speed of the background process ;).

For more information, see How Does Process Lasso's Restraint Work?

How will ProBalance affect CD/DVD Optical burners?

CD/DVD Burners typically don't use enough of the processor to be restrained, as they are usually waiting on disk or optical drive I/O. It is actually more likely that a buffer underrun would be prevented by Process Lasso because if you were in such a high-load situation, the other offending processes would have their priorities lowered, there-by giving the burning application more access to CPU cycles. Even if the burning process itself got lowered in priority, it'd be no worse off than without Process Lasso since the other active processes would surely have been lowered as well, there-by giving it equal footing, as it had originally.

Also, some burners raise their own priority and Process Lasso will NOT lower the priority of processes that have raised their own priorities, depending on the configuration of Process Lasso.

The bottom line is: Process Lasso is most likely to HELP, and even in a worst case scenario it shouldn't make things worse. That said, adding Optical Burning apps to the Process Restraint Exclusions list is probably a good idea, but far from necessary.

Process Lasso was designed to, above all, 'do no harm'.

Should I turn on foreground boosting?

Windows already does foreground boosting by giving foreground threads 3x longer time slices than background threads [depending on Windows version and configuration] and slightly increasing the thread priority. Process Lasso is capable of doing additional foreground boosting is a 'smart' way that compliments this built in mechanism. However, unless you require it, we generally don't recommend this option be on because the foreground process/thread is probably already boosted as much as will be effective by Windows. Additional boosting probably won't make a difference for most people, but it can in some situations. You can play with foreground thread and/or process boosting and see if you like it, as it should cause no harm -- but just may not benefit as much as you'd hope. The background process 'restraint' is more important function of Process Lasso and the proper way to handle situations where background processes are interfering with the foreground thread, which is already boosted in priority by Windows.

What is the difference between foreground priority class and foreground thread boosting?

Foreground priority class boosts the priority class of the entire process (aka application, or program) that is in the foreground (meaning it has the focus of the keyboard and/or mouse). In contrast, foreground thread boosting only boosts the single thread in that in the foreground. A layman could consider a thread as a piece of a program, instead of the entire program. Its brother and sister threads in the same process are not boosted.

What are the unattended setup details (silent, command line)?

Process Lasso supports completely unattended installation. All necessary settings can be supplied on the command line, including the license key. Please see this page for more info.

This other program that does something similar seemed to act when Process Lasso didn't, or vice-versa. What's the deal?

Automatically managing process/thread priorities without interfering with system and application operation, and effectively increasing system responsiveness is a delicate business. It could be done in a dumb sort of way that 'just does it'. That's not Process Lasso. Process Lasso was designed to interfere as little as possible with the Windows scheduler. In fact, it is designed to compliment and work along-side the Windows scheduler. Unfortunately, many other products that have a less sophisticated approach may not be so elegant. However, in some cases alternate products may be desirable. Our product is free. We invite you to find what's right for you.

Why don't you recommend using the trim virtual memory function?

RAM is your fastest storage medium. You generally want to keep as much data in it as possible, not force pages out to the page file so you have more 'free' RAM for the system cache or new application launches. When you force pages out, they simply have to be reloaded again later as page faults occur on them (see other answer for explanation of page faults). For more information, try this (very old) article.

What does the system responsiveness metric indicate?

It represents the ability of the thread messages subsystem to keep up with thread/window message demand. The exact way we calculate this we don't publish, but its a pretty simple and accurate measurement.

What does it mean when the system tray icon changes to the traffic light?

If your settings are the default, that means a process priority was automatically lowered via the process restraint mechanism, AND/OR it means your system is having a sustained 100% CPU load period (giving all it can give).

What are the highlighted portions of the graph?

These are times when a process's priority was temporarily lowered to improve system responsiveness. Seeing the highlight helps visualize the effects on system responsiveness, as shown by the green line on the graph.

What is 'More strictly enforce default priorities and affinities', aka 'forced mode'?

Sometimes applications like to control their own priorities. Process Lasso doesn't try to fight with them, instead only making a single attempt to set the default priority and/or affinity for the process. If you want Process Lasso to aggressively and forcibly enforce your default priorities and affinities, forced mode will do that. If you have a process that isn't staying at the default priority or affinity, you can use this option. It should be noted though that application that set their own priorities or affinities may be doing so for a good reason.

In another way to describe it: Forced Mode reapplies default priorities, affinities, and power profile settings. Let us say you have a default priority of 'Above Normal' on a process. However, you then change that priority manually to Normal. Or perhaps the program itself changes its priority to Normal. Process Lasso does not want to 'fight' with this program, or your manual change, so will let it be. If Forced Mode is on, it forces the priority back to Above Normal.

What is this 'thread boost' or 'Windows dynamic thread priority boosting' in the process priority setting?

When this is enabled for a process, Windows temporarily boosts the priority of threads for that process under certain conditions (when it leaves a wait state). For specific information, see this MSDN page about Windows dynamic thread priority boosting. Turning this off can severely impact the performance of applications that have a graphical user interface (a window). For background applications, this setting is not usually important.

What is the '(*)' shown after priorities in the process list?

That indicates whether or not Windows dynamic thread priority boosting is enabled for that process (see other question about thread priority boosting for explanation).

Process Lasso isn't minimizing when it is start at login, what is wrong?

This is probably due to the '/tray' parameter getting lost from the startup entry in the registry. The easiest way to fix it is to reinstall Process Lasso (no need to uninstall first, so your settings should be kept).

What about virtual memory prioritization?

Vista and above tag virtual memory pages with a priority, assigned by ReadyBoost. These priorities can be read, but are less easily adjusted. We are implementing a way to work with them, but we generally recommend users stay away from messing with default memory priorities. Remember, Windows and ReadyBoost are designed to work as optimal as possible. Too much tweaking can make matters worse. Process Lasso does a great job as is, so maybe you don't really need this feature.. though we will add it eventually.

I purchased the product, but am still seeing nags. What is wrong?

The Pro build is a completely separate download from the free build. Therefore, you likely mistakenly reinstalled the free version. You must be sure to install the copy you download from our User Services area.

I added critical system processes to the 'disallowed processes' list and now I've got problems. What do I do?

You need to delete your Process Lasso settings (located in the INI file). If you can't get to it, and can't use the GUI, try booting into safe mode. You can see where it is located at in the about box of Process Lasso. Uninstalling Process Lasso will also allow you to recover from this situation.

Process Lasso says 'Core Engine Not Running'. What does that mean?

For some reason the core engine of Process Lasso, named ProcessGovernor.exe, is not running. This is the part of Process Lasso that actually takes action. To Start the core engine, right click on the system tray (or Main menu of Process Lasso), and select 'Start Core Engine'.

Are there known processes Process Lasso works well with?

Yes, please see our case studies (under construction).

What versions of Windows is Process Lasso compatible with?

Process Lasso is designed to work with Windows XP, Vista, 7, 8, 8.1, 10, and all Windows Server Editions. Furthermore, Process Lasso has some specific features that compliment the latest Microsoft CPU and I/O scheduler enhancements.

How can I run the core engine as a service under a specific user account in Windows Vista Home Edition? It doesn't include secpol.msc.

Since Vista Home and Starter editions don't include the local security policy management console snap-in, you must manually assign the SeServiceLogonRight token to user(s). You can do this by using Microsoft's NTRIGHTS console mode utility (download, info). Open an administrative console and run 'NTRIGHTS -u myusername +r SeServiceLogonRight'. From this point forward, the user you specified will have the right to logon as a service.

Alternatively, you could chose to run the Process Lasso core engine as a system service, instead of a service under a specific user account.

For most other editions of Windows, run 'secpol.msc' and edit "Local Security Policies \ User Rights Assignment \ Logon as a service".

Can I do some further reading on how the Windows CPU scheduler works?

Sure, here are some links, and I'll add more as time allows. These are all third party links and articles.

What are Power Profiles?

For more information, please see this page: About Power Profiles.

Can Process Lasso help to reduce DPC latency?

Process Lasso can't help reduce DPC latency. It might otherwise help, but not to reduce DPC latency.

The underlying cause of high DPC latency is almost always an excessive number of interrupts that need servicing. Therefore, the devices generating the interrupts would need to be removed from the system or their activity reduced.

Some latency is to be expected if there is any I/O at all, especially in a non-realtime OS like Windows.

Most likely, DPC latency is already as good as it's going to get on the hardware you have. Maybe, theoretically, certain changes to the system or device configuration could help mitigate the problem, but you'll be left shooting in the dark to achieve a marginal improvement at best, and more probably make the situation marginally worse.

Ideally, there would be some company out there that spends time engineering specially crafted systems for audio work, and you'd pay a premium for it. In the absence of that, you need a faster processor. Probably one that runs at a higher clock frequency, as opposed to a lower clock frequency where more gets done per cycle (you want closer to RISC than to CISC end of spectrum). That probably means an Intel CPU.

  • Wikipedia: Thread scheduling (general, technical)
  • MSDN: Thread scheduling priorities
  • Everything you never wanted to know about OS multi-tasking (and why out of control processes need priority adjustment)
All content (c)2015 Bitsum LLC. Windows, Windows XP, Windows 2000, Windows Vista, and Windows 7, Windows 8, Windows 10, etc.. are registered trademarks of Microsoft Corp.


The Engineering of ProBalance

Take me to Bitsum Technologies to get Process Lasso

    Other short blurbs
  • When CPU Affinity Matters
  • When HyperThreading Hurts
  • About Power Profiles (Power Schemes)
  • Windows NT 6+ I/O Prioritization

To Bitsum

Process Lasso's Process Balance Technology (ProBalance)

Index

  1. How is a CPU shared amongst all running processes?
  2. What is Process Lasso's 'ProBalance' technology?
  3. Why doesn't foreground boosting work?
  4. Is ProBalance useful on multi-core PCs?
  5. Should I reprioritize all my processes, ranking them in importance to me?
  6. Why didn't Microsoft design the Windows CPU Scheduler 'just right' and handle these high load scenarios better? [for skeptics]
  7. Graphical Proof of Concept
  8. Third party links
  9. Frequently Asked Questions (different page)

How is a CPU shared amongst all running processes?

A process has a collection of threads (essentially running tasks). This is what the operating system sees, and executes. It basically keeps a long list of threads and rotates through them, giving each a turn to use the CPU(s) for a brief period of time (a time slice). This is where a thread's priority comes into play, along with other factors. The priority helps the scheduler (the part of the OS responsible for handing out time slices) determine which thread should get the next time slice.

A CPU can only do one thing at a time. Therefore, to multitask, the CPU is quickly switched between all active threads on the system. It switches between threads so quickly that it appears multiple processes are running at the exact same time (simultaneously), when in fact they are just taking turns (concurrently). 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 determine which should get the CPU next (which is most important). By temporarily lowering the priority class of overly active background processes, your system is kept responsive even in the face of high CPU loads. 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 from which the individual priorities of all threads of that process are derived from. In this way, the relative priorities between threads in a process are kept the same.

What is the problem?

Windows has a particularly bad problem dealing with threads that decide they want to consume every bit of CPU time they can get their hands on (a CPU bound thread). A single 'CPU bound' thread running at Normal priority can bring an entire single-CPU system to a stall, as demonstrated by our graphical proof of concept below. Yes, it is true - believe it or not! 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. It was later discovered that, with a few refinements, our algorithm could improve system responsiveness during periods of high CPU loads - in addition to saving the PC from a worst case scenario.

Some schedulers, such as the default one of the Linux kernel, penalize CPU bound (CPU hungry) threads while rewarding I/O bound threads. This is similar to what ProBalance effectively does. You see, on Windows systems *most* threads are I/O bound. They give up their time slices pre-maturely as they enter a wait state for some type of I/O. Sadly, CPU bound (CPU hungry) threads also exist from time to time, and do a real number of the less greedy I/O bound threads.

This does NOT mean you should start reprioritizing 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.

Why doesn't foreground boosting work?

First, for those who don't know, the foreground process is the process that owns the window that has keyboard and mouse focus. This means there is only ever one foreground process at a time. It is essentially the program you are currently working with. Some programs of lesser quality believe boosting the priority of the active foreground process is effective at increasing performance or responsiveness. The truth is that it does neither and more likely to do the opposite.

Windows already applies foreground boosting by giving 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.

What is Process Lasso's 'ProBalance' technology?

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 get totally 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.

Is ProBalance useful on multi-core PCs?

Yes, it is. Because of all the multi-tasking we are doing, ProBalance still greatly helps responsiveness even on multi-core CPUs. For example, while building Process Lasso, and having virtual machines running (for testing).. the difference with and without Process Lasso is amazing on an x86 CPU. multi-core PCs are subject to the same sort of problem as single core CPUs, except that it will take a greater number of badly behaved threads to greatly affect system responsiveness. Of course, Process Lasso also offers an assortment of features other than ProBalance that are useful to multi-core PC owners.

Multi-core owners will also find our default CPU affinity, watchdog CPU affinity change, and ProBalance CPU affinity change features useful.

Should I reprioritize all my processes, ranking them in importance to me?

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.

Proof of Concept

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.

Most Windows developers will tell you they are disappointed with the Windows CPU scheduler. They will tell you of a time when they had a bug that caused an infinite loop in a normal priority thread running in a process of normal priority class. Much to their dismay, their system was brought to a stall. They've seen this happen. They've stood in disbelief.

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.

Demonstration

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 ...

This demo defaults to being 'heavy handed', but feel free to lower the thread count. It usually takes far, far fewer to induce an effect than is the default value! Also REMEMBER, the threads created here are background threads. Out of control *foreground* threads cause ever *more harm* since they get considerably longer time slices (depending on scheduler config or OS edition).

  • Download 32-bit CPU Eater
  • Download 64-bit CPU Eater (for Windows x64 OS only)

Usage instructions:

  1. Download and run the above link appropriate to your operating system (32-bit or 64-bit)
  2. It will automatically start the CPU Eater control application for you
  3. Press the START button to initiate the test in a background process running at NORMAL priority
  4. If you PC seems to freeze because Process Lasso's ProBalance is not active, WAIT and everything will return to normal after the test terminates in a minute (or however long you specified). We also temporarily increase the priority of the control application so that you will hopefully be able to press the STOP button to terminate the background process that is hogging CPU cycles. Of course, if Process Lasso is running and ProBalance enabled then you won't have this problem.

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!

This is no trick! You can easily create your own 'CPU eater', or test similar utilities instead of ours. Some CPU Eaters out there raise their priority above Normal, because they don't realize that it only takes Normal priority to 'do the job'. For those, be sure to turn OFF the ProBalance option 'Options / ProBalance Settings / Exclude non-normal priority' or Process Lasso would just ignore them. Normally, Process Lasso leaves high priority processes alone because it assumes they have raised their priority for a good reason. Again, we try to act INTELLIGENTLY, which is the key to making good software. So, create your OWN. An infinite loop in any language, even classical DOS style batch files.

How our test works

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.

Manual tweaks can help

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.

So how come no fix from Microsoft?

One reason for this is that the intended proper behavior of a Windows application is not what is seen in the real world. They are meant to do a brief burst of CPU use, then enter wait state. Instead, they often are poorly designed and end up in live-locked and other 100% CPU use situations. It is impossible for Microsoft to know for sure what application really needs that CPU and which doesn't. With a little 'market intelligence', a little logic, and some help from the user Process Lasso's ProBalance can do better -- saving your PC from a total stall or simply increasing responsiveness.

What's left after uninstall?

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 System configuration 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.

Which CPUs and Windows variants does this algorithm benefit most?

ProBalance yields a benefit on all Windows variants and all CPUs, but it most benefits those CPU architectures that are lean more to the CISC side of the equation. Meaning, they do more per clock cycle, but are clocked at a lower clock speed. This gives them less granularity. We've tested and found it highly effective even on AMD 1055T and 1090T processors. We anticipate ProBalance to be very effective on AMD's new 8120 Bulldozer. It is definitely wonderful on Netbooks and Laptops, where the clock speed is generally lower. Higher clock speed Intel CPUs also benefit, make no mistake about it. Anyway, try for yourself, every system varies - and that is what our CPU Eater is for.

Research and links (external and internal)

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.

  • Everything you never wanted to know about OS multi-tasking (and why out of control processes need priority adjustment)
    "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
  • Hardware Virtualization: the Nuts and Bolts
    "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
  • From a former competitor that popped up briefly:
    "Priorities and their purpose are often poorly understood. Usually the misapprehension exists that if a process is taking a long time to complete then, if anything, its priority should be increased with the intent to make it finish faster. In most cases the CPU is spending near to all of its time executing the process anyway, so increasing the priority is only going to tell the scheduler to do what it is already doing. It may seem paradox but it is in fact more sensible to reduce the priority of the busy process so that the system is prepared to let other processes have some time thus allowing them to remain functional. In most cases other processes will not be using a significant amount of the CPU's time and allowing them to execute when they want to will not slow the busy process by any notable amount. Computer applications simply have to be idle practically all of the time in order for them to react quickly when the user interacts with them. Therefore, allowing a well behaved application to continue to respond in such a way will not take a significant amount of time away from the busy process."
    -(c) Peter Ball
  • Quote from Inside the Linux scheduler (IBM) - an example of another OS scheduler's attempt to address this
    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.
    Related articles
  • The Linux Scheduler (a similar scheduler to Windows, but tweaked differently)

A STRONG WARNING AND EULA

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.

All content (c)2015 Bitsum Technologies and Jeremy Collake. Windows, Windows XP, Windows 2000, Windows Vista, and Windows 7 are registered trademarks of Microsoft Corp.


Overview

Process Lasso is an automated Windows process (program) management and optimization utility. By managing the programs running on your computer, Process Lasso increases system responsiveness and helps to prevents system stalls. It accomplishes this through our ProBalance technology. This proprietary algorithm dynamically adjusts the priorities of running programs so that some are given higher priority access to the CPU(s) than others. With Process Lasso, no longer will single, or multiple, processes be able to bring your system to a virtual stall. Process Lasso will let you keep interacting with your computer, even when it is totally swamped.

In addition to the ProBalance technology, users can tweak how their programs are run. Process Lasso offers a number of unique and helpful capabilities. These include default priority classes, default CPU affinities, disallowed processes, keep running processes, per-process Power Profiles, a process watchdog, and process instance count limits. These features give you the ability to control how programs utilize your computer's resources based on automatic settings. With Process Lasso, you can decide exactly how you want your processes to run.

Process Lasso uses virtually no system resources itself, being written in highly optimized native x32 and x64 C++. The core engine can run stand-alone and consume as little as 1-3MB of RAM.

Documentation Contents

  1. The Parts of Process Lasso
  2. About ProBalance
    1. How is my CPU shared?
    2. How does ProBalance work?
    3. Proof of concept
  3. About CPU Throttling
  4. About Gaming Mode
  5. Using the Graphical User Interface (GUI)
    1. The Main Window
    2. Graph
      1. Per-process CPU history
    3. All Processes Tab
      1. Select what process information to show
      2. Rules column meaning
      3. Single selection process context menu
      4. Multiple selection process context menu
    4. Active Processes Tab
      1. Select what process information to show
      2. Double clicking a process
      3. Single selection process context menu
      4. Multiple selection process context menu
    5. Management of Services by managing their host process (even if multiple services in one process) ...
    6. Configuration Dialogs
      1. ProBalance Options
      2. Default CPU Affinities
      3. Default Priorities
      4. Auto-Terminate List
      5. Process Watchdog
      6. Instance count limits
      7. Keep running processes
      8. Gaming processes
      9. Anti-sleep processes
      10. Default Process Power Profiles
    7. Main Menu Options
  6. Using The Core Engine
    1. Overview
    2. Running as a Service
  7. Using the INI Configuration File
  8. Command Line Arguments
  9. System configuration tools ...
    1. TweakScheduler
    2. Vista Multimedia Scheduler Configuration Tool
  10. Enterprise Deployment
    1. Deployment methods
    2. On a Terminal Server
    3. Service mode
    4. Silent installation
  11. Frequently Asked Questions
  12. Credits
  13. Licensing
All content throughout documentation (c)2015 Bitsum Technologies


Process Lasso Quick Start

Quick Start Guide

Configure how Process Lasso starts

Process Lasso and its core engine are isolated from one another. During install, you are asked how you wish to start (or not start) them. You can later change this by visiting 'Options / General Process Lasso settings / Reconfigure the way Process Lasso starts'.

Server edition users often desire to have the core engine start as a service.

Set the log and configuration file paths

If you have a single instance of the governor managing the whole system, then you'll probably want to use global log and configuration folders.

Configure the ProBalance parameters

Be sure to configure the ProBalance Parameters to your liking. This is important, as each server is different and you've probably already got in mind what exactly you need Process Lasso to accomplish. These options can be adjusted via the dialog at the menu item 'Options / ProBalance settings / Configure ProBalance parameters'.

Set any ProBalance exclusions

If you notice any process being acted on by ProBalance that shouldn't be, you may wish to exclude it from restraint.

Alternate Quick Start Guide

An alternate quick start guide was created for Audiophiles, but may also be useful for many other server setups. You can view it here.

All content (c)2015 Bitsum LLC.


Process Lasso Advanced Tools

Process Lasso logo

Advanced Tools

TweakScheduler

This utility allows for adjustment of the NT CPU scheduler. Tweaking this changes how CPU time slices are allocated to running threads. It is not generally recommended that users modify these settings, but in some special cases users may have a need.

Vista Multimedia Scheduler Configuration Tool

This utility allows for adjustment of the Windows Vista/7 Multimedia Class Scheduler. The Multimedia Class Scheduler (MMCSS) is a new component added to Windows Vista to allow multimedia applications to better guarantee the availability of CPU cycles to their threads. Multimedia applications, which includes games, are grouped into different categories. Each category has its own scheduling settings. Note that applications must register themselves with the Multimedia Scheduler in order to take advantage of it. Most multimedia applications written for Windows Vista should do this, but some legacy applications may not.

Global Options

Option | Description
Network Throttling Index | This is the number of network packets per millisecond allowed during multimedia playback. The higher you set this value, the more network traffic will be allowed during playback and the more likely glitches in playback will occur. It is recommended to leave it at its default value unless you know what you are doing.
System Responsiveness Reserved CPU | This is the percentage of available CPU cycles that should be reserved for non-multimedia threads during multimedia playback. This prevents multimedia application(s) from bringing your system to a halt. Higher settings increase responsiveness, while potentially lowering the quality of realtime multimedia playback.

Task Options

Option | Description
Name | This is the name given to the task. Multimedia applications notify the scheduler that they are about to their thread is about to perform a certain task by specifying its name. The thread then adopts the attributes set for that task type.
Affinity | This is the selection of CPUs that multimedia applications in this class are able to use.
Clock Rate | This is the maximum guaranteed clock rate given to tasks of this classification (in 100 nanosecond units).
GPU Priority | This is the default GPU priority level for tasks in this classification. It is currently unused by Windows.
Priority | This is the default CPU priority level that should be given to tasks in this classification. If the scheduling category is set to 'High', this value will be overridden to '2'.
Scheduling Category | This is the scheduling category for tasks of this classification.
SF I/O Priority | This is the default SuperFetch I/O priority for tasks of this classification.
Background Only | This setting indicates whether or not to run tasks in this classification run in the background ONLY, with NO user interface.
Background Priority | When tasks of this classification are running in the background, this is the priority they should have.

References: Vista Multimedia Class Scheduler (MSDN)
Inside the Vista Kernel Part 1

All content (c)2013 Bitsum LLC


Command Line Arguments

Command Line Arguments for Installer

NOTICE: When using these command line arguments on the installer, be *sure* you have downloaded the right installer for your workstation or server. For instance, 64-bit or 32-bit, Server or Workstation. If you are using the wrong edition, the installer will try to correct itself by installing the right edition, and your command switches will be lost.
Switch (defaults in bold) | Description | Examples
/S (case sensitive) | Performs a silent installation. Since no configuration dialogs will be shown during install, you should compliment this switch with others (listed below) to specify how you would like Process Lasso configured. | ProcessLassoSetup.exe /S
/language=[English]
  • English (1033)
  • German (1031
  • Russian (1049)
  • Polish (1045)
  • Italian (1040)
  • Serbian (3098)
  • Japanese (1041)
  • Dutch (1043)
  • TradChinese (1028)
  • SimpChinese (2052)
  • ..(others)..
 This indicates the language to use. If this value is not supplied, it defaults to English. Do not try to use unsupported languages, and be sure your language name is spelled as listed here (i.e. SimpChinese). Some languages become unavailable if the translator or regional reseller does not update them, and new languages may be added not listed here. Alternatively, you can specify the language's code page number. ProcessLassoSetup.exe /S /language=English ProcessLassoSetup.exe /S /language=1033
ProcessLassoSetup.exe /S /language=German ProcessLassoSetup.exe /S /language=1031
ProcessLassoSetup.exe /S /language=Serbian
ProcessLassoSetup.exe /S /language=Italian
ProcessLassoSetup.exe /S /language=SimpChinese
/key=[numerickey] | This sets the offline activation code, which is NOT the standard activation code. It is a number, given to the user as '#12345678'. The can include the '#' prefix character, though this optional on the command line. It is mandatory when using offline activation codes in the GUI. Offline activation keys are granted to Server, Site, and Multi-Site license customers only. | ProcessLassoSetup.exe /S /key=1234567892781
/gui_start_type=[all|current|manual][,uac] This indicates whether to start the GUI at login for ALL users (all), for only the current user (current), or neither (manual). The current user is the user context in which the installer is running. Add 'UAC' anywhere to this parameter to indicate that it should launch the governor with elevated permissions in Vista, Windows 7, Windows Server 2008, and above. ProcessLassoSetup.exe /S /gui_start_type=all
ProcessLassoSetup.exe /S /gui_start_type=current
ProcessLassoSetup.exe /S /gui_start_type=manual
ProcessLassoSetup.exe /S /gui_start_type=all,UAC
/governor_start_type=[all|current|service|manual][,uac] This indicates whether to start the core engine (processgovernor) at login for ALL users (all), for only the current user (current), as a service, or neither (manual). The current user is the user context in which the installer is running. When /governor_start_type=service, the /username and /password switches can be used as modifiers to indicate in what user context the service should run. If a username and password isn't supplied, it will run in the system context. Add 'UAC' anywhere to this parameter to indicate that it should launch the governor with elevated permissions in Vista, Windows 7, Windows Server 2008, and above. ProcessLassoSetup.exe /S /governor_start_type=all
ProcessLassoSetup.exe /S /governor_start_type=current
ProcessLassoSetup.exe /S /governor_start_type=service
ProcessLassoSetup.exe /S /governor_start_type=service /username=myuser /password=mypass
ProcessLassoSetup.exe /S /governor_start_type=all,UAC /username=myuser /password=mypass
/logfolder=[folder]

This indicates to use a global log folder for ALL users on the system. By default, each user has his or her own log folder in their respective application data directory. However, it is sometimes desirable to consolidate all log events into a single log folder. Be sure that this log folder is writable by all users on the system.

When using a user-defined config and log path, we recommend storing the config in a sub-folder, e.g. "C:\ProcessLasso\Config" and the logs in another sub-folder "C:\ProcessLasso\Logs". This is now the default for users who don't specify a static path for either (except it uses %appdata% of course).

The reason we suggest this is because, otherwise, every time the log is written to, it will trigger a file system change notification event on that folder and cause the configuration file to be checked to see if it changed. It won't be reloaded, so not much overhead, but a little. The granularity of file system change notifications in Windows is limited to folders, thus putting the config in it's own folder makes sure that only writes to it cause a change notification event.

 ProcessLassoSetup.exe /S /logfolder=c:\systemlogs
ProcessLassoSetup.exe /S /logfolder=c:\systemlogs
/configfolder=[folder] This indicates to use a global configuration folder for ALL users on the system. By default, each user has his or her own configuration in their respective application data directory. However,

it is sometimes desirable to use the same configuration for all users, and is required when the governor is run as a service. Be sure that this configuration folder is at least readable by all users, and writable by those who you wish to allow configuration changes.

When using a user-defined config and log path, we recommend storing the config in a sub-folder, e.g. "C:\ProcessLasso\Config" and the logs in another sub-folder "C:\ProcessLasso\Logs". This is now the default for users who don't specify a static path for either (except it uses %appdata% of course).

The reason we suggest this is because, otherwise, every time the log is written to, it will trigger a file system change notification event on that folder and cause the configuration file to be checked to see if it changed. It won't be reloaded, so not much overhead, but a little. The granularity of file system change notifications in Windows is limited to folders, thus putting the config in it's own folder makes sure that only writes to it cause a change notification event.

 ProcessLassoSetup.exe /S /configfolder=c:\pl_config
ProcessLassoSetup.exe /S /configfolder=c:\pl_config
/launch_gui=[true|false] | This indicates whether or not to launch the GUI after installation. Even when the GUI is launched, it remains minimized to the system tray. | ProcessLassoSetup.exe /S /launch_gui=true
/importconfigfrom=[path] This indicates to import the configuration from the file you've specified. This should be used in conjunction with /configfolder. The file you specify here will be the initial configuration for Process Lasso. You can specify only a folder OR a specific filename here. If you specify only a folder, "prolasso.ini" will simply be appended to the path name. ProcessLassoSetup.exe /S /configfolder=c:\pl_config /importconfigfrom=c:\temp
ProcessLassoSetup.exe /S /configfolder=c:\pl_config /importconfigfrom=c:\temp\my_default_config.ini
/username=[user]
/password=[pass] 		When running the core engine as a service (/governor_start_type=service), these switches can be used to indicate under which user you should start the service. The user MUST have permission to 'logon as a service' (see our FAQ for info on allowing that). If a specific user is not supplied, the core engine will run in the system context. Please remember that the Windows user password is case sensitive. ProcessLassoSetup.exe /S /governor_start_type=service /username=myuser /password=mypass
/configpw=[password] | This sets the configuration password. This password is required for by the GUI when a user tries to make a change to the configuration file. Use this parameter without a value to remove any existing password. | ProcessLassoSetup.exe /S /configpw=somepassword

Command Line Arguments for ProcessLasso.exe

Command line arguments for the GUI and core engine are available. You can use them to over-ride the configuration and log paths, but this is not normally necessary or recommended. Changes to the configuration and log paths should instead be performed by the installer (preferred) or the InstallHelper application.

Switch | Description | Examples
/Tray | Causes the main window to not be immediately displayed. | ProcessLasso.exe /tray
/ConfigFolder= | Indicates the configuration folder that should be used. It is assumed that 'prolasso.ini' will exist in it. If not, it one be created with default values. | ProcessLasso.exe /ConfigFolder="c:\program files\Process Lass\o" ProcessLasso.exe /ConfigFolder=c:\config\ ProcessLasso.exe /ConfigFolder=\\server1\ProcessLassoConfig\
/LogFolder= | Indicates the folder containing the log files. This folder requires read and write access. | ProcessLasso.exe /LogFolder=\\server1\logfolder ProcessLasso.exe /LogFolder=c:\pslogs
/Config | Invokes the Out-of-control Process Restraint configuration dialog. This is primarily only used by the installer. Note that this creates a separate instance of Process Lasso that displays the configuration dialog, then exits when the dialog is closed. | ProcessLasso.exe /config

Command Line Arguments for ProcessGovernor.exe
Switch | Description | Examples
/ConfigFolder= | Indicates the configuration folder that should be used. It is assumed that 'prolasso.ini' will exist in it. If not, it one be created with default values. | ProcessGovernor.exe /ConfigFolder="c:\program files\Process Lasso\" ProcessGovernor.exe /ConfigFolder=c:\config\ ProcessGovernor.exe /ConfigFolder=\\server1\ProcessLassoConfig\
/LogFolder= | Indicates the folder containing the log files. This folder requires read and write access. | ProcessGovernor.exe /LogFolder=\\server1\logfolder ProcessGovernor.exe /LogFolder=c:\pslogs

All content (c)2013 Bitsum LLC


Components

The Parts of Process Lasso

Process Lasso consists of a core engine and a user interface. The two are separated so that users can completely close the user interface while keeping Process Lasso active, managing processes. The core engine is run as ProcessGovernor.exe, while the user interface is ProcessLasso.exe. Running only the core engine results in memory usage of a mere 1-3MB (typically) and almost no CPU use.

When the user interface, ProcessLasso.exe, is launched it automatically launches an instance of the ProcessGovernor.exe core engine if one isn't already running for the current user. When you close the user interface, you are asked whether you want to keep the core engine running or not.

Each user session is meant to have their own instance of ProcessLasso.exe and ProcessGovernor.exe. This is so that they can have individual configurations and process rule sets, and so that each instance is limited to its own processes.

Component | Filename | Description
Process Lasso Graphical User Interface | ProcessLasso.exe | This the graphical user interface that serves the purposes of configuring the product, manually managing processes, and displaying current activity by Process Lasso in real time. It also provides a graph to view current CPU usage and system responsiveness. This component is optional and does not need to be installed or running for proper operation of Process Lasso's core engine (Process Governor). For usage documentation, click here.
Process Governor Core Engine | ProcessGovernor.exe | This is the core engine that applies process management rules. This can run by itself for minimal resource consumption.
Installer for Process Governor | InstallHelper.exe | This utility allows you to configure how the Process Governor starts at system boot or user login.
Configuration File | ProLasso.ini | This configuration file holds the process rules and options for Process Lasso. It can actually be named anything, and be placed anywhere, including remote shares. You can change its location using the Process Lasso Management Console, supply command line parameters, or manually editing the registry (HKCU).
Log File | ProLasso.log | This log file keeps a record of recent actions. You can disable it to save a little more system resources. Its size is automatically trimmed periodically in accordance with the logging configuration in the INI file. The log can be stored anywhere, including remote shares. You can change its location using the Process Lasso Management Console, supply command line parameters, or manually editing the registry (HKCU).
All content (c)2013 Bitsum LLC


Process Governor Core Engine

The Core Engine

The most critical component of Process Lasso is its stand-alone core engine, called the Governor. The Governor is responsible for applying all the process rules and adjustments. It runs silently in the background, emitting only log entries when actions are taken.

Since the background engine can run by itself, without the GUI, users can choose to open the GUI only when configuration or status updates are necessary. This results in less resource usage by Process Lasso. However, even with the GUI running, resource usage is negligible on most systems.

Multiple instances of the Governor can (and do) run simultaneously. For each user that logs into the system, an instance will be created to manage that user's processes. You can alternatively configure the Governor to run as a system service, so that a single instance is responsible for managing the processes of all users. Each instance of the Governor can have its own configuration and log files, or they can all share the same ones (see global overrides). By default, each instance of the governor defaults to using a configuration file located in the user's application data directory. The log folder is also located there.

Running as a service

In many cases, it is ideal to have only a single instance of the Governor that manages the processes of all active users on the system. This single instance can be run as a system service (Pro version only). You can configure this mode of startup during the install process.

When running the Governor as a service, a global configuration file and log folder over-ride should be used. These too can be specified during the install process.

Installation types

Install type | Description
Normal process | In this mode, each instance of the governor will manage the processes in its own user context, and those in the system context if it has access to them. This is the default way the Governor is installed, and is recommended for most people. Note that you configured the UAC settings to 'Highest' during Install so that Process Lasso could manage the processes of other users, then each instance of the governor will manage all processes running on the system, instead of just those in its own user context. This won't cause any functional problems, but log events may be spread amongst the different user contexts if a centralized log folder isn't used.
Service (system) | In this mode, the Governor runs as a service in the system context and manages the processes of all users. System tray balloon tip notifications (off by default) will not work in this mode.
Service (user) | In this mode, the Governor runs as a service in a particular user context and manages the processes of all users. You must edit the security policy so that services are allowed to login as the user you've chosen. You can run 'secpol.msc' or use the NTRights utility to edit the local security policy.

Config and log storage modes

Config and log storage mode | Description
Per-user | In this mode, the configuration file and log folder for each user is independent. Each user can therefore have control of his or her own configuration, and only sees the log events that their instance of the Governor created. This is the default mode of operation.
Global / Centralized | In this mode, a centralized configuration file and log folder are used. All users share the same configuration and log. Any change to the configuration or log in one user context is shown in all users contexts. This is the required mode of operation when running the Governor as a service. The global paths can be set during the install process (last configuration dialog). Be sure that all users have at least read access to the configuration file, and have write access to the log folder.
All content (c)2013 Bitsum LLC


Overview

Credits

Process Lasso was written by Jeremy Collake. Additional credits are to:
  • Some artwork by Nicolas Nguyen
  • XMessageBox code by Hans Dietrich
  • Testers and especially supportive users: Scott Danesi
  • Translators of localized builds

About the author

Jeremy Collake has over 17 years programming experience. He specializes in low-level systems programming and compression algorithms. He has dedicated his career to contributing to the world in the best way he can.

All content (c)2013 Bitsum LLC


Enterprise deployment

In the Enterprise

Process Lasso works wonders on servers. It can prevent a single process from monopolizing the server's CPU resources. We offer a special Server Edition of Process Lasso, with a 30-day free trial available. See this page for more information.

Process Lasso can be used on Terminal Servers, web servers, file servers, or more complex network client/server environments. In fact, it can be used in just about any scenario you can envision. The fact that the core engine is separate from the GUI makes it easy to install without it being visible to the end user. You can even run the core engine as a system service, a feature many network admins will appreciate.

On a Terminal Server

On a Terminal Server what we recommend is letting the core engine (processgovernor.exe) start for every user that logs in. This instance of the core engine would manage only that user's processes. This is asked towards the end of install. So, choose to start the GUI only for you (to reconfigure or view log), then select to start the core engine for all users. In the config dialog that follows that one, simply tell the core engine to manage only processes in its session (the default setup). This is how Process Lasso was designed to work, and is how it operates best.

The reason not to run the core engine as a service that manages all users is because it can not identify which processes are in the foreground of other user sessions, and therefore the ProBalance algorithm can not make as informed decisions and may temporarily lower the priority of active foreground processes - something that isn't usually desirable (though not particularly harmful in most cases). If you wanted to set it up this way anyway, you could exclude some common applications from ProBalance restraint, or 'tone down' ProBalance by raising the quotas in the 'ProBalance Parameters'.

If you are not using ProBalance, and instead using other features, then this is not a worry and you can use either method.

You have the option of allowing each user to have his or her own configuration file and log folder, or have all users share the same ones. This option is presented to you towards the end of install, at the same time you are asked about startup configuration.

On distributed networks (with workstations and servers)

Here you have the option of installing Process Lasso on the workstations and server, or just on the server. It is up to you. You can share a global log and configuration file with a mapped drive or UNC path if you choose. UNC paths are fine so long as the user has access. In this way a level of centralized management is possible.

Methods of Deployment

During the install process, towards the end a little config wizard pops up that will ask you questions relevant to how Process Lasso and its core engine should start. First, know that the core engine is totally in the background and has no visible presence. The system tray icon is part of the GUI. You have two basic choices:

  1. Each user gets their own instance of the silent background core engine when they log in (default, most effective)
  2. A single instance of the core engine manages all user processes (less accurate)

The big question is whether you want to use a centralized network configuration and log store, a per-machine store, or a per-user store.

Option 1: Centralized configuration and log

In this mode, all workstation are configured to use the same configuration file and log folder. These can be on network shares, or can be pushed out to workstations through alternate methods.

Option 2: Per-workstation configuration file and log

In this mode, you'd install Process Lasso on each workstation and use a common configuration and log path that every user of the workstation would access.

Option 3: Per-user configuration file and log

In this mode, you'd install Process Lasso on each workstation and let each user have their own configuration and log. This is the default behavior of Process Lasso. If you don't need or want to make changes to the configuration or modify the log files, this is a good way to run Process Lasso.

Option 4: Some combination of the above, or an alternate method

In the end, you can utilize Process Lasso just about however you want. You could have workstations launch it from a network share, for instance, without ever having to install Process Lasso on those workstations. The prerequisites to running Process Lasso are very few. Older systems (XP before SP2) will require Microsoft's GDIPLUS.DLL to be installed before the Process Lasso GUI can run. However, the core engine does not require the GDIPLUS library to be present. There are no other pre-requisites. This makes for simplistic portable use or launching from a network path.

Service Mode

You can install Process Lasso's core engine, processgovernor, as a service. This option is presented to you during the install process of Process Lasso Pro. It is also available during silent installs using the command line switches.

Running the core engine as a service has its advantages as disadvantages. As described above, it has no knowledge of what process is in the foreground of other user sessions so ProBalance is not nearly as accurate in its actions. This only affects ProBalance though, so is not an issue if you aren't using ProBalance. Even if you are using ProBalance, it may not be problematic with an exclusion or two and additional tweaking (or maybe it is never a problem).

Silent Installation

Process Lasso (as of v3.53) now supports completely silent installation. For more information, see the command line switches documentation.

More help?

If you have any questions about getting Process Lasso up and running in your enterprise, please email us at support@bitsum.com. Customized solutions are also available.

All content (c)2013 Bitsum LLC


Features

Keep in mind that all these functions are enforced by the background core engine, processgovernor.exe. The Graphical User Interface of ProcessLasso.exe controls the system tray icon and main user interface. The core engine can run completely without the GUI, if desired.

  • Keep Running (Restart on Crash)

Keep Running
This feature ensures a process or application is always running. You can have any process or processes restart on crash, restart if it becomes unresponsive, or simply start if its not running.

DRAFT - UNFINISHED DOCUMENT

Features

This section will clarify some of the features of Process Lasso. There are so many, we've listed them alphabetically and provided an Index.

All content (c)2012 Bitsum Technologies and Jeremy Collake.


Process Lasso Gaming Mode

Gaming Mode 2.0

For a long time, Bitsum provided the knowledge and capacity for users to customize their power plans, and automate when those power plans are induced. With ParkControl, we revealed hidden CPU settings that control core parking, and wrote about how much core parking and CPU frequency scaling can affect performance of real-world CPU loads. Put simply, these power saving technologies work well at conserving energy, but come with a trade-off. When the CPU is down-clocked or cores parked, it is not ready to execute code, and thus some degree of ramp-up time is required when new code needs executed. This especially impacts performance when the CPU activity comes in bursts, which is the most common type of CPU load.

Now Process Lasso offers a power plan pre-configured for maximal performance. When in this new Bitsum Highest Performance power plan, your CPU always remains ready to execute new code. Core parking is disabled and the CPU is always running at it’s maximum frequency. You can automate when it is induced with Process Lasso’s Gaming Mode, or you can use the default application power profiles feature.

Thus, Gaming Mode will induce this new highest performance power plan, and also make a few tweaks to the behavior of ProBalance - which will keep background processes from interfering with your game play.

Back to Process Lasso Docs

Back to Process Lasso

All content (c)2012 Bitsum LLC and Jeremy Collake.


Installing in a Network Environment

Installing in a Network Environment

NOTE: Process Lasso Network Edition has been seperated from the consumer edition. These options may not be available in the version you have downloaded.

This section describes the procedure to install on a network. There are two basic installation methods for a network environment:

1.) Install Process Supervisor with or without the GUI on all client systems via the installer.
2.) Running Process Supervisor with or without the GUI via a login script or other mechanism to execute it from a remote location.

A third topic in this section describes maintaining and configuring a network installation after it is set up:

3.) Maintaining and configuring the network installation.

1.) Install Process Supervisor with or without the GUI on all client systems via the installer

There are two components to Process Supervisor that require hosting on a server in order to manage all the client installations. The first in the configuration file (prosuper.ini) that defines the behavior of client installations. This file should be placed on a server with read or read/write permission given to client machines. Alternatively, each client machine can have its own configuration file, but then changes of the configuration will require editing of each configuration file.

The second component is the log folder. It is in this folder that logs are stored and actions performed on client machines are recorded. Client machines should have read/write access to this folder.

Process Supervisor should be installed on all client machines and the machines that you will use to monitor client installations.

When installing Process Supervisor the following dialog will be displayed:

The lower three radio boxes are options for a network installation. They are described below:

Option | Description
"This computer hosts the configuration file and logs for a network installation." | This option should be selected if you are installing the product on the server that holds the configuration file or log files. The server(s) that hold these files don't actually have to have process supervisor installed on them, but the option is provided.
"This is a client computer on a network installation of Process Supervisor and I *do* want users to be able to use the graphical user interface." | The graphical user interface is the part of Process Supervisor that displays an icon in the notification (tray) area of the computer and shows running processes, CPU usage, and other related information. If you want users to be able to use this, select this option. Note that if the configuration file is hosted in a folder that only allows read operations, the users will not be able to update the configuration themselves.
"This is a client computer on a network installation of Process Supervisor and I do *not* want users to be able to use the graphical user interface." | The graphical user interface is the part of Process Supervisor that displays an icon in the notification (tray) area of the computer and shows running processes, CPU usage, and other related information. If you do NOT want users to be able to use this, select this option. Note that if the configuration file is hosted in a folder that only allows read operations, the users will not be able to update the configuration themselves.

After selecting the appropriate option, the configuration file and log folder may be chosen. If on a client machine, you should browse for and select the network shares that contain each of these. Make sure the log folder has read/write permission and the configuration file does not (unless you want users to be able to change the global configuration).

One last option is to actually invoke remote copies of the process supervisor executables. They may be hosted on a network server and run from it instead of locally. If you desire this, simply check the applicable checkbox and browse for the folder share that contains the executables.

After pressing the 'Next' button, a second dialog is displayed. This one allows you to choose how the core engine, processgovernor.exe, should be installed. It can be installed as either a normal application or as a system service. The advantage of having it installed as a system service is that it is launched before user login and it can be more difficult to terminate by the user if the operating system security is configured correctly.

After you've installed Process Supervisor on all client systems and set up the configuration file hosting and log file hosting, go to the third section "maintaining and configuring Process Supervisor in a network installation".

2.) Running Process Supervisor with or without the GUI via a login script or other mechanism to execute it from a remote location

Process Supervisor does not actually need to be installed on client machines. In fact, it may save the network administrators considerable effort to not have to install it on all client machines.

Process Supervisor can be installed on a server and its executable shared on the network. The shared folder or executables only need read access, and greater access is not recommended.

This document assumes you already have a login script set up or know how to invoke a remote executable when a user logs in. There are two primary executables involved in Process Supervisor:

1.) ProcessSupervisor.exe is the graphical user interface (GUI). It also allows for configuration options.
2.) ProcessGovernor.exe is the core engine that manages running processes.

ProcessGovernor.exe must be executed on client machines. It has no GUI portion and so its execution will not be apparent other than its listing in running processes. You should pass the '/ConfigFile=xxxxx' and '/LogFolder=xxxxx' parameters on the command line to specify the location and name of the configuration file. In example, "\\server1\folder1\processgovernor.exe /configfile=\\server1\psconfig\prosuper.ini /logfolder=\\server1\pslogs".

If you want the GUI to be run also, simply set ProcessSupervisor.exe to be launched in the same way with the '/ConfigFile=' and '/LogFolder=' parameters also supplied.

Examples:

\server1\folder1\processgovernor.exe /configfile=\\server1\psconfig\prosuper.ini /logfolder=\\server1\pslogs
\server1\folder1\processsupervisor.exe /configfile=\\server1\psconfig\prosuper.ini /logfolder=\\server1\pslogs

One may need to use the 'start' command to make sure that execution of a bach file isn't held up by processgovernor.exe not terminating. In example:

start \server1\folder1\processgovernor.exe /configfile=\\server1\psconfig\prosuper.ini /logfolder=\\server1\pslogs
start \server1\folder1\processsupervisor.exe /configfile=\\server1\psconfig\prosuper.ini /logfolder=\\server1\pslogs

After this, proceed to the next section "maintaining and configuring Process Supervisor in a network installation".

3.) Maintaining and configuring Process Supervisor in a network installation

Once you've installed Process Supervisor it may be configured by using the server system or another system with Process Supervisor installed and with write access to the configuration file. You simply configure Process Supervisor via the GUI and it is saved to the shared copy of the configuration file. This sets the configuration for all systems using that configuration file.

The logs are viewed in real time and you will see log events show up the lowest pane of the graphical user interface.

For further assistance, please email support@bitsum.com .


Licensing

Process Lasso is free for HOME and ACADEMIC use, but users can purchase the Pro version for additional functionality. The free build will also show some non-obtrusive, non-timed nags over time (at initial startup only). Commercial users must purchase Process Lasso Pro within 30 days of use.

  • Home users: Follow this link...
  • Commercial users: Follow this link...

All content (c)2011 Bitsum Technologies and Jeremy Collake.


Funkcja ProBalance od ײodka

Zabierz mnie do witryny Bitsum Technologies w celu pobrania Process Lasso

    Pozostaԥ artykuԹ
  • Kiedy koligacja CPU ma znaczenie
  • Kiedy HyperThreading negatywnie wpԹwa na wydajnoצ
  • Priorytety I/O (Windows NT 6+)

Wr󦠤o Bitsum

Technologia Process Balance (ProBalance) programu Process Lasso

Indeks

  1. Jak potencjaӠCPU jest dzielony mi륺y procesy?
  2. Co to jest technologia "ProBalance"?
  3. Dlaczego przyspieszanie pierwszego planu nie dziaԡ?
  4. Czy ProBalance nadaje siꡮa komputery z wielordzeniowymi procesorami?
  5. Czy mo࠮a ustawia桰riorytety proces󷠺ale࠮ie od ich znaczenia dla nas samych?
  6. Dlaczego Microsoft nie zaprojektowaӠplanisty CPU tak, aby w sytuacjach duࠥgo obciѿenia system nie przestawaӠreagowa濼/a>
  7. Graficzne udowodnienie niedoskonaԯףi planisty CPU w systemie Windows
  8. Linki
  9. Najcz귣iej zadawane pytania (inna strona)

Jak potencjaӠCPU jest dzielony mi륺y procesy?

Na proces skԡdajѠsi꡷Ҵki (uruchomione zadania). To je system widzi i wykonuje, "w륲ujң" po ich dԵgiej liףie, przydziela im kolej dziaԡnia na kr󴫩 okres czasu (partiꡣzasu). Ta lista to miejsce, w kt󲹭 priorytet zaczyna odgrywa桲olꬠrazem z innymi czynnikami. Priorytet pomaga planiףie (cz귦 systemu operacyjnego odpowiedzialna za przydzielanie partii czasu) okre׬i欠kt󲹠proces powinien dosta桫olejnѠpartiꡣzasu.

Jednostka CPU moࠥ wykonywa桴ylko jednѠczynnoצ naraz. Wielozadaniowoצ polega na tym, ࠥ CPU jest bԹskawicznie przeӱczany mi륺y wszystkimi aktywnymi wҴkami. Dzieje si꡴o tak szybko, ࠥ wiele proces󷍊zdaje siꡤziaԡ桷 tym samym czasie (r󷮯cze׮ie), kiedy w rzeczywistoףi ich kolej wykonywania jest niezauwaࠡlnie zmieniana. Dla komputer󷠺 wielordzeniowymi procesorami nadal ma to zastosowanie, przy czym wtedy ma miejsce prawdziwa r󷮯czesnoצ wykonywania wҴk󷠨tylu, ile rdzeni posiada procesor) naraz.

Gdy kilka wҴk󷠮araz potrzebuje CPU, priorytet okre׬a, kt󲹠ma zosta桷ykonany w pierwszej kolejnoףi. Poprzez tymczasowe obniࠥnie priorytetu zbyt cykloࠥrnego procesu, system nadal reaguje nawet w sytuacji duࠥgo obciѿenia. Zmiana priorytetu w d󳠰owoduje takࠥ obniࠥnie priorytet󷠷szystkich wҴk󷠴ego procesu. Przez przeprowadzenie akcji na procesie dochodzi do zmiany priorytetu kaࠤego z wҴk󷠮a ten, kt󲹠posiada proces-rodzic. Tym sposobem priorytety wҴk󷠤anego procesu sѠrelatywnie te same.

Na czym polega problem planisty CPU w systemach Windows?

System Windows ma powa࠮y problem z radzeniem sobie z wҴkami, kt󲥠chcѠwykorzystywa桴yle kolejnych partii czasu CPU, ile siꡤa (monopolizm wykorzystania czasu CPU). Jeden "monopolistyczny" wҴek majңy priorytet Normalny moࠥ doprowadzi桳ystem pracujңy na jednordzeniowym procesorze do kompletnego zawieszenia, co poniࠥj demonstruje nasze graficzne udowodnienie niedoskonaԯףi planisty CPU. To wԡ׮ie w tym celu zostaӠstworzony Process Lasso, mianowicie po to by kontrolowa桰rocesy (ich priorytety) tak, aby system zawsze reagowaӮ Poprzez tymczasowѠzmianꡰriorytetu agresywnego procesu system moࠥ zosta桯calony przed "zamroࠥniem". Po dalszych udoskonaleniach okazaԯ siꬠࠥ nasz algorytm na dԵ࠳zѠmetꡰoprawia reagowanie systemu podczas du࠹ch obciѿe񠃐U - do tego nie dopuszczajң do najgorszego scenariusza.

Niekt󲥠mechanizmy planujңe jak na przykԡd domy׬ny jҤra systemu Linux, karajѠwҴki monopolistycznie wykorzystujңe CPU na rzecz wҴk󷠺wiҺanych z I/O. Jest to podobne do tego, co robi ProBalance. W systemach Windows wi묳zoצ wҴk󷠪est zwiҺanych z I/O. Z racji tego, ࠥ przechodzѠw stan oczekiwania na zdarzenie I/O, przedwcze׮ie oddajѠswoje partie czasu. Niestety, cykloࠥrne wҴki takࠥ pojawiajѠsiꡯd czasu do czasu, zu࠹wajң znacznie wi뤥j czasu CPU niߠte zwiҺane z I/O.

To nie oznacza, ࠥ mo࠮a ustawia桰riorytety proces󷠷edԵg wԡsnego uznania. Najlepiej pozwoli桮aszemu algorytmowi ProBalance na automatyczne wykonywanie czynnoףi usprawniajңych. Proszꡮie zmienia桲뤺nie priorytet󷬠chyba ࠥ posiada si꠶wiadomoצ tego, co siꡲobi. Spowoduje to wi뤥j szk󤠮iߠuczyni dobra. Piszemy nasze oprogramowanie tak, aby funkcjonowaԯ wydajnie i bezpiecznie w swojej domy׬nej konfiguracji, lecz nie moࠥmy tego samego powiedzie桯 r뤺nie dokonanych zmianach przez u࠹tkownika.

Dlaczego przyspieszanie pierwszego planu nie dziaԡ?

Proces pierwszego planu to proces, kt󲥧o okno jest na wierzchu oraz na kt󲹭 znajduje siꡫursor myszy i klawiatury. Jest to r󷮯znaczne z tym, ࠥ na pierwszym planie moࠥ by桴ylko jeden proces naraz. Autorzy niekt󲹣h gorszej jakoףi program󷠴kwiѠw przekonaniu, ࠥ przyspieszanie pierwszego planu zwi묳za wydajnoצ lub reagowanie systemu. W rzeczywistoףi jest odwrotnie: nie przyspiesza, a spowalnia.

System Windows samoczynnie przyspiesza pierwszy plan poprzez przyznawanie jego wҴkom dԵ࠳zych partii czasu. Dalsza optymalizacja (zmiana priorytetu procesu i/lub konkretnego wҴku pierwszego planu) wcale nie jest efektywna. Trzeba zapami뵡欠ࠥ nadanie procesowi wy࠳zego priorytetu nie sprawi, ࠥ b륺ie on dziaԡӠszybciej. To tylko wskaz󷫡 dla planisty, ࠥ temu procesowi trzeba przydzieli桰artie czasu w pierwszej kolejnoףi (je׬i kilka wҴk󷠮araz potrzebuje CPU). Niemniej jednak, je׬i pojedynczy proces ma i pierwsze񳴷o, i dԵ࠳ze partie czasu (przyspieszanie pierwszego planu skutkuje ich przyznaniem), mogѠwystҰi桫omplikacje. Nasze badania w kierunku u࠹tecznoףi (dodatkowego, poniewaߠpodstawowe w postaci dԵ࠳zych partii czasu sѠzarzҤzane przez system) przyspieszania pierwszego planu wykazaԹ, ࠥ powoduje ono liczne konflikty z komponentami systemu operacyjnego i niekt󲹭i aplikacjami.

Nale࠹ by桰rzezornym w kwestii narz륺i-przyspieszaczy, kt󲹣h jedynѠfunkcjѠjest zmiana priorytetu pierwszego planu. Programy tego typu sѠbardzo ԡtwe do napisania oraz sѠkolejnѠsztucznѠrzeczѬ w kt󲱠niekt󲹭 ludziom kaࠥ si꡷ierzy殠W niekt󲹣h przypadkach autor po prostu nie rozumie istoty dziaԡnia planisty CPU oraz dlaczego dodatkowe przyspieszanie pierwszego planu jest zԹm pomysԥm, w innych - firmy nie obchodzi jakoצ, tylko zale࠹ im na czerpaniu jak najwi묳zych korzyףi. Pokr󴣥, to bardzo zԥ rozwiҺanie, kt󲥠jest przereklamowane oraz kt󲥧o powinno si꡵nika桺a wszelkѠcenꮼ/p>

Co to jest technologia "ProBalance"?

Process Balance (ProBalance) to nazwa naszego algorytmu, kt󲹠dokonuje tymczasowych zmian priorytet󷠤ziaԡjңych proces󷠍 w celu utrzymania reagowania systemu podczas du࠹ch obciѿe񮼯p>

Gdy dochodzi do sytuacji, w kt󲥪 rdzenie sѠobciѿone (intensywnie pracujѩ, reagowanie systemu moࠥ drastycznie spaצ. Na komputerze z jednordzeniowym procesorem wystarczy wi룠jeden ݬe zachowujңy si꡷Ҵek, aby doprowadzi桳ystem do potocznie zwanego zamroࠥnia. Nawet wҴki wysokiego priorytetu zostajѠpozbawiane cykli CPU, poniewaߠwszystkie partie czasu sѠpochԡniane przez wҴek z priorytetem normalnym. Problem ten jest nieodӱcznym elementem planisty CPU systemu Windows oraz generalnej architektury systemu operacyjnego. Owszem, wyglҤa na to, ࠥ taki problem nie powinien istnie欠ale fakty m󷩱 same za siebie (prosz꡺obaczy桳ekcjꠢSceptycy" poniࠥj).

ZwykԹ u࠹tkownik zapewne cz봴o do׷iadcza zmniejszenia reagowania systemu na kr󴫩 okres czasu. Dzieje si꡴ak zazwyczaj z powodu wystҰienia bԪdu w procesie tԡ lub po prostu pod wpԹwem duࠥgo obciѿenia CPU. Nieraz zdarza siꬠࠥ ruch kursora myszy jest nie doצ, ࠥ op󼮩ony, to jeszcze szarpany, a kaࠤa czynnoצ zdaje siꡢy桤rogѠprzez m묪.

Funkcja ProBalance programu Process Lasso inteligentnie obniࠡ priorytety proces󷠍 tԡ, kiedy mogѠone ingerowa桷 reagowanie systemu. Taka zmiana nie jest szkodliwa, poniewaߠprocesy takie nadal otrzymujѠwydatnѠiloצ czasu CPU; wynikiem takiej akcji jest zwi묳zenie reagowania procesu pierwszego planu (aby proces reagowaӠwystarcza kilka cykli CPU). Zabieranie im cykli (i tak tylko w razie potrzeby) jest nieszkodliwe oraz zmiana priorytetu jest tymczasowa, wi룠zostaje odwracana kiedy tylko system wraca do r󷮯wagi. Process Lasso jest zaprojektowany tak, aby byӠmaԯ natarczywy oraz aby obniࠡӠpriorytety tylko wtedy, kiedy trzeba.

Czy ProBalance nadaje siꡮa komputery z wielordzeniowymi procesorami?

Tak. ProBalance ׷ietnie sobie radzi na maszynach z wieloma rdzeniami (na przykԡd podczas kompilacji Process Lasso i pracy na maszynach wirtualnych jednocze׮ie (testowanie), r󿮩ca mi륺y z a bez Process Lasso jest zdumiewajңa na procesorze 32-bitowym). Maszyn z wieloma rdzeniami tyczy si꡴o samo, co tych z jednordzeniowym CPU, przy czym w przypadku tych pierwszych potrzeba proporcjonalnie wi묳zej iloףi agresywnych wҴk󷬠aby system si꡺awiesiӮ Oczywiףie obsԵga wielu rdzeni przez ProBalance to nie jedyna zaleta, kt󲱠oferuje Process Lasso posiadaczom takich komputer󷮍

U࠹tkownikom wielordzeniowych maszyn z pewnoףiѠprzydadzѠsiꡦunkcje takie jak: zmiana domy׬nej koligacji CPU, zmiana koligacji CPU funkcji Watchdog i zmiana koligacji CPU ProBalance.

Czy mo࠮a ustawia桰riorytety proces󷠺ale࠮ie od ich znaczenia dla nas samych?

Absolutnie NIE. Niekt󲥠programy zach뤡jѠdo tego, lecz jest to niebezpieczne. Autorzy tych program󷠮ie sѠ׷iadomi niebezpiecze񳴷a lub po prostu sѠna to oboj뵮i. Co prawda Process Lasso oferuje moࠬiwoצ automatycznej zmiany priorytetu domy׬nego na zdefiniowany przez u࠹tkownika, jest to opcja do u࠹tku w pewnych okolicznoףiach. Najlepiej pozwoli桡lgorytmowi ProBalance ostro࠮ie dokonywa桺mian priorytet󷠷edԵg potrzeby.

Sceptycy

Krѿy wiele przekԡma񬠴akich jak chociaࠢy defragmentatory RAM. Niczym anormalnym jest to, ࠥ niekt󲺹 u࠹tkownicy sѠsceptyczni. Naj׭ielsze argumenty sѠrozpowszechniane przez tych, kt󲺹 sѠzbytnio pewni siebie w kwestii planisty CPU Windows. WierzѠoni albowiem, ࠥ je׬i planista Windows jest napisany jak trzeba, wҴki normalnego priorytetu nie b뤱 znacznie ingerowa桷 wydajnoצ wҴk󷠯 wy࠳zych priorytetach. Ten argument jest gԯszony szczeg󬮩e w ײodowiskach linuksowych, kt󲹣h czԯnkowie tak naprawdꡮie do׷iadczyli prawdziwej wydajnoףi planisty systemu Windows.

Wi묳zoצ deweloper󷠳ystemu Windows wyrazi swoje niezadowolenie z planisty CPU swojego systemu. Wspomni czas, w kt󲹭 mieli do czynienia z niesko񣺯nѠp뵬ѠspowodowanѠprzez bӱd w wҴku z normalnym priorytetem. Ku ich przeraࠥniu, system si꡺awiesiӮ Zobaczyli to na wԡsne oczy. Stali w niedowierzaniu.

PrawdѠjest, ࠥ na jednordzeniowej maszynie, jeden wҴek priorytetu normalnego moࠥ doprowadzi桳ystem do zawieszenia! W takiej sytuacji nawet wҴki wysokiego priorytetu zostajѠpozbawiane czasu CPU przez cykloࠥrny wҴek. Zdumiewajңe, aczkolwiek prawdziwe. W przypadku komputer󷠺 wielordzeniowymi procesorami, liczba wҴk󷠰otrzebnych do tego by poԯ࠹桳ystem na ԯpatki, jest r󷮡 iloףi dost뱮ych rdzeni. Prosz꡷ypr󢯷a桮aszej aplikacji demonstrujңej lub napisa桷ԡsnѮ Kaࠤy niehamowany wҴek, kt󲹠nie robi nic poza zu࠹waniem cykli CPU, ujawni ten fenomen.

Demonstracja

Stworzyli׭y "Poࠥracz CPU", kt󲹭 mo࠮a przetestowa桐roBalance. Aplikacja ta tworzy kilka wҴk󷠍 z priorytetem normalnym. WҴki te po prostu marnujѠcykle CPU. Teraz, je׬i planista CPU Windows zachowaӠsi꡷edle przypuszcze񬠍 pozostaԹm procesom zostaԡ wystarczajңa iloצ cykli CPU, aby reagowa栭- pomimo obecnoףi i dziaԡnia "Poࠥracza CPU" w tle. Niestety, to nie jest rezultat. Reagowanie systemu b륺ie drastycznie spada桷 miar꡵pԹwu czasu! Prosz꡺obaczy栮..

To ࠡden trik! Mo࠮a stworzy桷ԡsny "poࠥracz" lub u࠹桰odobnego narz륺ia zamiast naszego. Niekt󲥠programy tego typu podnoszѠsw󪠰riorytet, chociaߠ"wystarczy" priorytet Normalny. Domy׬nie, Process Lasso pozostawia procesy z wysokim priorytetem w spokoju zakԡdajң, ࠥ nie podniosԹ go sobie bez powodu. Je׬i wi룠taki "poࠥracz" jest uruchomiony z wysokim priorytetem, zostanie domy׬nie zignorowany przez Process Lasso, chyba ࠥ opcja: "Opcje / ProBalance / Wyklucz procesy z priorytetem innym niߠNormalny" jest odznaczona. Staramy siꡤziaԡ桉NTELIGENTNIE, co jest kluczem to tworzenia dobrego oprogramowania. Mo࠮a bardzo ԡtwo stworzy桷ԡsny "poࠥracz", wystarczy niesko񣺯na p뵬a w jakimkolwiek j뻹ku programowania. Nie trzeba nam wierzy欠je׬i to wbrew czyjej֠woli.

Domy׬na konfiguracja tej demonstracji zakԡda naprawdꡤuࠥ obciѿenie, niemniej jednak iloצ wҴk󷠭oࠥ zosta桤owolnie zmniejszona. Prosz꡺apami뵡欠"Poࠥracz" tworzy wҴki w tle. Niekontrolowane wҴki pierwszego planu czyniѠjeszcze wi묳zego spustoszenia wydajnoףi, poniewaߠdostajѠdԵ࠳ze partie czasu (zale࠮ie od konfiguracji planisty lub edycji systemu operacyjnego).

  • Pobierz "Poࠥracz CPU" w wersji 32-bitowej
  • Pobierz "Poࠥracz CPU" w wersji 64-bitowej (tylko edycje x64)

Instrukcja u࠹cia:

  1. Pobierz i uruchom odpowiedni plik wykonywalny powyࠥj (32- lub 64-bitowy).
  2. Kliknij przycisk START, aby rozpoczҦ test dziaԡjңy z priorytetem normalnym.
  3. Je׬i wyglҤa na to, ࠥ system si꡺awiesiӬ odczekaj p󳠭inuty (lub ile czasu zdefiniowano), aߠtest si꡺ako񣺹. Proces okna "Poࠥracza" otrzymuje tymczasowo wy࠳zy priorytet, aby r뤺ne zatrzymanie procesu byԯ moࠬiwe. Oczywiףie je׬i Process Lasso jest uruchomiony a funkcja ProBalance wӱczona - o ࠡdnym zawieszeniu siꡮie ma mowy.

Zapami뵡j, ࠥ je׬i nie zainstalujesz Process Lasso, test wykaࠥ po prostu niedoskonaԯצ planisty CPU systemu Windows. Musisz zainstalowa桐rocess Lasso, aby zobaczy桫orzyףi z dziaԡnia ProBalance.

Po instalacji Process Lasso wyӱcz ProBalance (lub zako񣺠procesy: ProcessLasso.exe i ProcessGovernor.exe). Wtedy uruchom "Poࠥracz CPU", aby zobaczy桺achowanie systemu z wyӱczonym ProBalance. Po uko񣺥niu testu, wӱcz ProBalance lub uruchom Process Lasso. Teraz uruchom ten sam test jeszcze raz (funkcja ProBalance musi by桷ӱczona!). Zdumiejesz siꡲ󿮩cѬ niezale࠮ie od iloףi rdzeni, kt󲥠posiada procesor Twojego komputera!

Zapami뵡j, ࠥ wҴki, kt󲥠tworzy "Poࠥracz CPU" dziaԡjѠz priorytetem normalnym oraz nie robiѠnic poza dziaԡniem w niesko񣺯nej p뵬i. Kaࠤa aplikacja dziaԡjңa na Twoim komputerze moࠥ doprowadzi桤o tego, co zademonstrowaӠ"Poࠥracz CPU".

OSTRZEЅNIE: Jako ײodek ostro࠮oףi zalecamy zapisanie wszystkich otwartych dokument󷠰rzed przeprowadzeniem tego testu. Prosz꡴akࠥ nie resetowa桫omputera. Reagowanie systemu wr󣩠do normalnoףi po 30 sekundach (wartoצ domy׬na). U࠹tkownik zgadza siꡮa akceptacj꡷szystkich ryzyk mogңych wystҰi桰odczas testu. Nie sѠone co prawda nadzwyczajne, lecz system zostaje obciѿony, co moࠥ spowodowa桰roblemy na systemach, kt󲥠ݬe znoszѠ"rozpraszanie ciepԡ". W skr󣩥, test jest wykonywany na wԡsne ryzyko. Musimy to orzec i u࠹tkownik musi na to przytaknҦ, je׬i chce spr󢯷a桴ego testu.

Powy࠳za demonstracja zajmuje tylko 2 minuty. Proszꡳpr󢯷a桼/b>

Jak dziaԡ nasz test

Przedstawienie niedoskonaԯףi planisty CPU Windows jest proste. Najԡtwiej pokaza桴o na przykԡdzie komputera z jednordzeniowym procesorem.

Najpierw prosz꡵tworzy桰roces, kt󲹠b륺ie dziaԡ桷 niesko񣺯nej p뵬i. Nazwiemy go "Poࠥraczem". Teraz, prosz꡵ruchomi桴en proces (jak kaࠤѠinnѠaplikacjꩠz priorytetem normalnym. Je׬i planista zadziaԡӠwedle przypuszcze񬠷ydajnoצ pozostaԹch proces󷠮ie zostaԡ zaburzona. Niestety u࠹tkownik odkryje, ࠥ ten jeden proces jest cykloࠥrny do tego stopnia, ࠥ pozbawia on czasu CPU innych proces󷬠co doprowadza do zawieszenia siꡳystemu - nawet zako񣺥nie tego procesu jest bardzo trudne. Ma to potwierdzenie nawet w kwestii planisty w Windows Vista, wbrew ulepszeniom wydajnoףi.

Aby test byӠmiarodajny, prosz꡺wi묳zy桬iczb꡷Ҵk󷬠kt󲥠"Poࠥracz CPU" ma utworzy桬ub po prostu prosz꡵ruchomi桫ilka jego instancji - ten sam efekt zostanie otrzymany.

R뤺ne modyfikacje konfiguracji pomagajѼ/h3>

Process Lasso posiada wiele funkcji pozwalajңych na kontrolꡰroces󷬠takich jak domy׬ne priorytety/koligacje proces󷬠kt󲹭i mo࠮a naprawd꡵lepszy桤ziaԡnie systemu. ProBalance to ׷ietna moࠬiwoצ automatycznej poprawy reagowania, lecz je׬i u࠹tkownik uwaࠡ za konieczne wԡsne zmiany, ma moࠬiwoצ dokonania ich. Сden zautomatyzowany algorytm nie zastҰi spersonalizowanych preferencji u࠹tkownika.

Dlaczego Microsoft nie wydaӠpoprawki?

Jednym z powod󷠪est to, ࠥ domniemane zachowanie aplikacji pod systemem Windows jest dalekie od rzeczywistego. Wi묳zoצ z nich jest pisanych w nurcie kr󴫩ego, intensywnego u࠹cia CPU i p󼮩ejszego stanu oczekiwania. Zamiast tego, sѠcz봴o miernie zaprojektowane i nierzadko okresy stuprocentowego u࠹cia procesora sѠnormalnym stanem rzeczy. Microsoft po prostu nie jest w stanie okre׬i欠kt󲥠aplikacje naprawdꡰotrzebujѠCPU a kt󲥠nie. Z maԹm obadaniem rynku, odrobinѠlogiki i pomocy ze strony u࠹tkownika, uczynimy ProBalance lepszym algorytmem, ratujңym system u࠹tkownika przed zawieszaniem siꡬub poprawiajңym reagowanie systemu jeszcze wydajniej.

Co pozostaje po deinstalacji Process Lasso?

Powiedzmy, ࠥ osoba wypr󢯷aԡ Process Lasso i chce go odinstalowa殠Co pozostaje po programie? Nic. Сdne trwaԥ zmiany w systemie nie zostaԹ zastosowane jak teߠprogram nie zostawiӠpo sobie ࠡdnych plik󷮠 Tak jak u࠹tkownik, nie lubimy "׭ieci" pozostawianych po deinstalacji i zwԡszcza oprogramowania dokonujңego permanentnych zmian w systemie, kt󲥠nie sѠodwracane przy jego usuwaniu. Process Lasso nie modyfikuje konfiguracji systemu, bezpiecznie zarzҤza procesami podczas pracy silnika (ProcessGovernor.exe). Zaawansowane narz륺ia doӱczone do Process Lasso (TweakScheduler i Narz륺ie konfiguracji Harmonogramu klas multimedi󷩠dokonujѠzmian systemowych, ale tworzѠprzed ich zastosowaniem kopi꡺apasowѬ aby zapewni桭oࠬiwoצ przywr󣥮ia tych ustawie񠤯 poprzedniego stanu.

Na jakich procesorach/wariantach system󷠗indows algorytm daje najlepsze wyniki?

ProBalance ׷ietnie siꡳprawdza na wszystkich procesorach/edycjach Windows, lecz najwi묳ze korzyףi przynosi na procesorach opartych o CISC. Mianowicie, wykonujѠone wi뤥j przez cykl, ale ich taktowanie jest ni࠳ze. ProBalance daje dobry efekt takࠥ na procesorach AMD 1055T i 1090T. Przewidujemy, ࠥ nasz algorytm b륺ie r󷮩eߠbardzo efektywny na nowym modelu AMD 8120 Bulldozer. ProBalance ׷ietnie siꡳprawdza na netbookach i laptopach, poniewaߠ taktowanie procesor󷠷 komputerach tego typu jest generalnie ni࠳ze. W przypadku szybszych procesor󷠭arki Intel, ProBalance r󷮩eߠprzynosi wspaniaԥ rezultaty. Niemniej jednak, niech u࠹tkownik przekona siꡳam - do tego celu stworzyli׭y wԡ׮ie "Poࠥracza CPU".

Linki i opinie specjalist󷠉T

Problemy, kt󲥠pr󢵪e zniwelowa桐roBalance sѠdobrze udokumentowane w caԹm internecie. Moࠥmy by桰ostrzegani jako stronniczy (chociaߠjeste׭y stronniczy tylko wobec prawdy), zdecydowali׭y si꡺amieףi桴utaj kilka docieka񮼯p>

  • Wszystko, czego nie chciaԥ֠wiedzie桯 wielozadaniowoףi (oraz dlaczego niekontrolowane procesy potrzebujѠzmian priorytet󷩼/span>
    "Powinienem zwr󣩦 uwagꡮa to, ࠥ system Windows posiada inne komplikacje zwiҺane z planowaniem, mianowicie podziaӠna zadania "pierwszego planu" i "tԡ" [...] W mojej skromnej opinii najwa࠮iejsze jest to, ࠥ system operacyjny bardziej siꡳkupia na upewnianiu, ࠥ zadanie nie jest gotowe do wykonania niࠥli na sprawiedliwym podziale czasu procesora. [...] BҤܠco bҤܬ moࠥmy sprawdza桵࠹cie CPU przez wҴek/proces i pom󣠳ystemowi zarzҤza桰riorytetami."
    -(c) Tim Murgent z TMergent Technologies
  • Od byԥgo konkurenta, kt󲹠szybko wyraziӠswojѠopini꺍
    "Priorytety i ich przeznaczenie sѠcz봴o ݬe rozumiane. Zazwyczaj wyst뱵je nieporozumienie, ࠥ je׬i proces potrzebuje du࠯ czasu na zako񣺥nie zadania, jego priorytet powinien zosta桺wi묳zony w wierze szybszego uko񣺥nia. Jednostka CPU praktycznie caԹ czas pracuje, wi룠priorytet m󷩠tylko planiףie, aby robi桴o, co procesor wԡ׮ie wykonuje. Moࠥ to si꡷ydawa桰aradoksalne, ale faktycznie bardziej sensowna jest redukcja priorytetu zaj뵥go procesu na rzecz przygotowania siꡳystemu do obsԵࠥnia pozostaԹch proces󷬠pozwalajң im w ten spos󢠰ozosta桦unkcjonalnymi. W wi묳zoףi przypadk󷠴e pozostaԥ procesy nie b뤱 zu࠹waԹ znaczңej iloףi czasu CPU, co pozwoli im na funkcjonowanie, a to tylko nieznacznie spowolni zaj뵹 proces. Aplikacje muszѠby桰raktycznie caԹ czas w trybie gotowoףi (bezczynne), aby bԹskawicznie zareagowa桮a akcj꡺e strony u࠹tkownika. Zatem, dopuszczenie dobrze zachowujңej siꡡplikacji do cz귣i cykli oferowanych zaj뵥mu procesowi nie odbije si꡺naczңo na jego wydajnoףi, a pozwoli procesom mniej wymagajңym by桷 gotowoףi."
    -(c) Peter Ball
  • Cytat z Inside the Linux scheduler (IBM) - przykԡd zachowania planisty systemu operacyjnego w celu niwelacji tego problemu
    "Aby zapobiec monopolistycznemu u࠹ciu CPU i zarazem pozbawianiu zada񠰯trzebujңych cykli, planista systemu Linux 2.6 dynamicznie zmienia priorytet zadania. Dokonuje tego przez karanie zada񠩮tensywnie wykorzystujңych CPU na rzecz tych zwiҺanych z I/O. Te drugie wykonujѠoperacjꡉ/O i przeӱczajѠsi꡷ tryb oczekiwania na zdarzenie I/O, zwalniajң zarazem czas CPU. Ten spos󢠺achowania daje pozostaԹm zadaniom dost밠do CPU."
    ArtykuԹ powiҺane
  • The Linux Scheduler (planista podobny do tego w systemie Windows, aczkolwiek nie ten sam)

POWAЎE OSTRZEЅNIE I POSTANOWIENIA LICENCYJNE KO҃OWEGO UЙTKOWNIKA

Process Lasso zostaӠstworzony z jednѠpodstawowѠzasadѬ mianowicie by nie wyrzҤza桳zk󤮠Zatem, algorytm ProBalance wprowadza tylko zmiany uznane za caԫowicie bezpieczne. Co wi뤥j, program dokonuje tak maԥj iloףi zmian jak to tylko moࠬiwe. Podchodzimy do tego w spos󢠫onserwatywny. Widzieli׭y oprogramowanie nie b뤱ce tak osto࠮ym. Proszꡳtrzec siꡳztuczek, kt󲥠rzekomo przyspieszajѠpoprzez niedbaԥ zmiany priorytet󷮠 Wiele z nich namawia do zwi묳zenia priorytetu na Wysoki, co jest niepomocne i niebezpieczne. Prosz꡷ypr󢯷a栢Poࠥracza CPU" lub napisa桷ԡsny - nic prostszego w j뻹ku C: 'while(1);' (niesko񣺯na p뵬a) to wszystko...

Gdy u࠹tkownik ma zamiar wprowadzi桺miany w dziaԡniu konkretnych proces󷠳ystemowych lub chce wӱczy桰oszczeg󬮥 funkcje Process Lasso, wy׷ietlane sѠostrzeࠥnia informujңe o moࠬiwym ryzyku. Jednakࠥ, nie jeste׭y w stanie zapobiec kaࠤemu bԪdowi popeԮionemu przez u࠹tkownika/oprogramowanie, wi룠negatywnych skutk󷠷ynikԹch z modyfikacji konfiguracji programu wykluczy桮ie mo࠮a. Ponadto, ostrzeࠥnie u࠹tkownika przed wszystkimi moࠬiwymi zagroࠥniami jest niemoࠬiwe, dlatego zalecamy nie zmienia桤omy׬nych ustawie񠐲ocess Lasso poczҴkujңym i ײednio-zaawansowanym posiadaczom komputer󷮠 Nieostro࠮e zmiany klas priorytet󷠰roces󷠳Ѡpotencjalnie szkodliwe dla stabilnoףi systemu. Zalecamy pozostawi桐roBalance samemu sobie, pozwoli桭u wykonywa桳wojѠpracꡡutomatycznie, chyba ࠥ u࠹tkownik zdaje sobie spraw꡺ tego, czego dokonuje.

OdkҤ Process Lasso pozwala na zaawansowane modyfikacje konfiguracji, musimy juߠpodczas instalacji ostrzec przed niedbaԹmi zmianami. Jak zawsze, u࠹tkownik dziaԡ na wԡsne ryzyko i ponosi odpowiedzialnoצ za wszelkie szkody materialne/niematerialne, wynikajңe z u࠹wania/nadu࠹wania naszego oprogramowania. Je׬i u࠹tkownik z powy࠳zymi postanowieniami siꡮie zgadza, nie moࠥ u࠹wa桮aszego oprogramowania. Postanowienia licencyjne ko񣯷ego u࠹tkownika sѠprezentowane na pierwszym etapie instalacji. Je׬i konsument nie przeczyta i nie zgodzi siꡮa te warunki, musi przerwa桩nstalacjꮼ/p>

Zawartoצ (c)2011 Bitsum Technologies i Jeremy Collake. Windows, Windows XP, Windows 2000, Windows Vista, i Windows 7 sѠzarejestrowanymi markami Microsoft Corp.


Using the GUI

Using Process Lasso

About Process Lasso's Graphical User Interface

The Process Lasso Graphical User Interface is an easy to use application that allows the user to configure the rules governing running processes, view actions taken, list and manipulate running processes, and watch CPU usage, system responsiveness, and memory load on a graph. When run, its main window will be displayed and a notification icon that looks like a traffic light will be placed in the system tray area. Closing the main window will minimize it to the system tray. The main window can be reopened by clicking the system tray icon.

Remember, the Graphical User Interface (GUI) of Process Lasso does NOT need to be running for process rules to be enforced. That said, it consumes very little resources, especially when minimized to the system tray. However, you can completely close the GUI and simply keep the core engine (processgovernor.exe) running silently in the background to get all the benefits of Process Lasso with absolutely minimal overhead. When you exit the Process Lasso GUI, you will be asked if you would like to keep the core engine (processgovernor.exe) running or not. When configuration changes or status updates are wanted, you can then start the GUI from the system Start Menu.

During the install process, you can decide if you want to start the GUI and/or core engine for all users at login. Many times, people prefer to simply start the core engine for all users, getting the benefit of ProBalance without any additional overhead. Of course, you may then forget just how much benefit Process Lasso is doing you, but you'll be reminded if you ever uninstall the product ;). Again, the GUI really doesn't consume many resources at all, especially when minimized, so its recommended to let them both start up, except in extreme cases where RAM is really limited.

Index

  1. Main Window
  2. The Graph
    1. Highlighted ProBalance events
    2. Per-process CPU history
    3. RAM load graph
      4.
  3. All Processes Tab
    1. Select what process information to show
    2. Rules column meaning
    3. Single selection process context menu
    4. Multiple selection process context menu
      5.
  4. Active Processes Tab
    1. Select what process information to show
    2. Double clicking a process
    3. Single selection process context menu
    4. Multiple selection process context menu
      5.
  5. Keyboard Shortcuts
  6. Configuration Dialogs
    1. ProBalance Options
    2. ProBalance Exclusions
    3. Default CPU Affinities
    4. Default Priorities
    5. Auto-Terminate List
    6. Process Watchdog
    7. Instance count limits
    8. Keep running processes
    9. Gaming processes
    10. Anti-sleep processes
    11. Default Process Power Profiles
      12.
  7. Main Menu Options

Main Window

The main window consists of a CPU utilization and system responsiveness graph, a list of running processes, and a list of recent actions (log). The configuration of Process Lasso is made easy to tweak through the menu system. In the main menu you'll find all the general configuration options. Right-clicking on a process, or multiple processes, shows available operations on those process(es).

The Graph

The Process Lasso graph shows a calculation of system responsiveness and overall CPU utilization. The system responsiveness is calculated using a proprietary algorithm that measures the latency in the user interface (windowing) subsystem.

Highlighted portions of the graph indicate that an out-of-control process restraint occurred during that period. This can help you see the impact of Process Lasso on system responsiveness. Note that the highlighted areas of the graph may not be 100% accurate in their timing, but are somewhere very close. As future versions come the accuracy of the highlighted area will improve.

Highlighted ProBalance events

During periods when ProBalance takes action to ensure your system repsonsiveness remains high despite a spike in CPU use, the graph will be highlighted. The log can be referenced to see what actions were taken.

New in v4 - Hovering over a highlight even will show you the process(es) adjusted (in priority or CPU affinity) at that time.

CPU history of selected process(es)

With Process Lasso you can see the individual CPU history of process(es) you select in the process list. The CPU utilization history of all processes currently selected (highlighted) in the process list is drawn as a smaller white line on the graph. For example, the user below selected 'devenv.exe' and its CPU history was drawn onto the graph as a white line.

RAM Load Graph

New in v4 - A new RAM Load graph has been added to the right, even though the RAM load history is indicated on the main graph. This new graph is intended to give you a quick read on the RAM load. You can hide it by simply clicking it, or by using the View menu to toggle its visibility.

The All Processes Tab

The Process List shows running processes and allows for easy rule creation. You can right click on any process, or on multiple processes, to get a context menu of available options. Amongst many other things, the options include setting current priorities and affinities, as well as default priorities and affinities.

Single process context menu

The context menu when multiple processes are selected is different than when a single process is selected, since not all operations can be performed on multiple processes.

Multiple process context menu

As you can see, with Process Lasso you can select MULTIPLE processes at once and operate on them. Not all functions are available when multiple processes are selected, but most common ones are. This includes process rule creation.

Selecting which columns to show

You can select which columns you want visible by right-clicking on the 'All processes' tab, right-clicking on the list header, or using the 'View / Select Process Columns' menu. In addition, you can resize the columns (at their headers) and change the column ordering by dragging the column headers. These view changes will be remembered by Process Lasso. The same applies for the 'Active processes' tab. Note that right-clicking the 'Active processes' tab allows for setting process information shown in that column. Information in the 'Active processes' tab is more limited than information in the 'All processes' tab. However, double clicking on any process in the 'Active processes' tab will take you to its entry in hte 'All processes' tab.

Rules Column

The 'rules' column in the running process list gives a quick summation of rules that match the process. Its format is terse, but users get quickly acclimated to it once they understand how to read it. The format of the Rules column follows.

Rules column format: [X][x][K][g][M][e][s][p][Mx][R][s][iX][<-<<<<][#n][RHANBI][0-61]

Character(s) | Meaning
X | Excluded from ProBalance restraint
W | A watchdog trigger of any type is set on this process
x | Excluded from foreground boosting
e | Energy Saver is disabled when this process is running [v6]
K | Keep process running (auto-restart if terminated)
g | Process is classified as a game
M | Process is classified as a multimedia application
s | Process will prevent the computer and display from sleeping
p | Process will cause the PC to enter a particular Power Profile
#n | Instance count limit of n, i.e. #2 for an instance limit of 2
Mx | Where '#' is the default memory priority set for this process.
R | Default priority class: Real time
H | Default priority class: Highest
A | Default priority class: Above normal
N | Default priority class: Normal
B | Default priority class: Below normal
I | Default priority class: Idle
ih | Default I/O priority class: High
in | Default I/O priority class: Normal
il | Default I/O priority class: Low
ib | Default I/O priority class: Very Low (background)
0-61 | Default CPU affinity, i.e. '02' for CPUs 0 and 2
< | Throttle level lowest
<< | Throttle level low
<<< | Throttle level moderate
<<<< | Throttle level high

The Active Processes Tab

Selecting which columns to show

You can select which columns you want visible in the 'Active Processes' tab the same way you can in the 'All Processes' tab. by right-clicking on the 'Active processes' tab or by right-clicking on the list header. In addition, you can resize the columns (at their headers) and change the column ordering by dragging the column headers. These view changes will be remembered by Process Lasso. Double clicking on any process in the 'Active processes' tab will take you to its entry in the 'All processes' tab, where additional information is available.

The Active Processes tab shows only processes that are actively utilizing the system CPU(s). It displays basic information about them, and a horizontal bar graph to visually depict their active CPU utilization.

Right clicking on one or more of the processes in the 'Active Processes' list show the same context menu as found in the 'All Processes' tab.
Double clicking on a process in the 'Active Processes' list will find the corresponding process in the 'All Processes' tab and make it visible.

Screenshot of the 'Active Processes' view:
[Active Processes Tab screenshot]

Double clicking a process in the active processes view

You can double click a process in the 'Active processes' tab to go to that process in the 'All processes' tab, where extended information is available.

Single process context menu

Right-clicking on a process in the 'Active Processes' tab shows the same context menu as in the 'All processes' tab. You can perform any available operation on the process.

The context menu when multiple processes are selected is different than when a single process is selected, since not all operations can be performed on multiple processes.

Multiple process context menu

Just as in the 'All processes' tab, you can select multiple processes and right-click on them to perform an operation on all of them.

Keyboard Shortcuts

DEL
Terminate selected processes (forcible)
CTRL+A
Select All processes in current view
CTRL+G
Toggle main graph visibility
CTRL+R
Toggle RAM load visibility

Configuration Dialogs

    Dialogs
  • ProBalance Options
  • Default Priorities
  • ProBalance Exclusions
  • Persistent CPU Affinities
  • Auto-Terminate List
  • Process Watchdog
  • Instance count limits
  • Keep running processes
  • Gaming processes
  • Anti-sleep processes
  • Persistent Application Power Profiles

Out-of-Control Options

Tooltips!

Help on the options in this dialog can be obtained by hovering the mouse cursor over the item you want help on. After a few seconds, a popup tooltip will appear that describes the field you are hovering over.

Out-of-Control Exclusions

Persistent Priority Classes

Persistent CPU Affinities

Auto-Terminate List

The processes listed here will get terminated when they are found to be running. Process Lasso can not (at present) actually prevent them from trying to start up, it just immediately terminates them when it finds them running.

Process Watchdog

The process watchdog allows for you to take an action on a process when it exceeds a certain amount of CPU or Memory. You can specify actions of Restart, Terminate, or Change Affinity. You can choose commit size of working set size if using a memory trigger. With both memory and CPU triggers, you can set a time the process must exceed this threshold before action is taken.

Instance Count Limits

You can limit the number of instances of a process allowed to be running at the same time (per user session) with this dialog. New instances of processes will be terminated if they match a pattern here and the number of instances is already equal to, or greater than, the instance count limit.

Keep Running Processes

You can ensure certain processes are kept running by entering in this dialog. This way, they can restart on crash, or restart if they become unresponsive. You can set this by right-clicking on a process, using the 'Keep process running', or by using application menu opion at 'Options / Configure Keep running processes ...'.

Gaming Processes

You can designate certain proceses as games. This causes Process Lasso to induce the High Performance Power Profile and make certain adjustments to ProBalance in an effort to ensure all available CPU cycles go to the game. This mode should ONLY be used for games or other very CPU intensive applications that need every bit of processing power. You designate a gaming process by right-clicking on a process, using the 'When running / Turn on gaming mode' menu, or by using application menu opion at 'Options / Configure Game processes ...'.

Anti-sleep Processes

You can prevent the PC and display from entering a sleep or hibernate state by adding them to the 'anti-sleep' list. You can do this by right-clicking on a process, using the 'When running' menu, or by using application menu opion at 'Options / Configure Anti-Sleep processes ...'.

Persistent Application Power Profiles

You can set certain processes to cause the system to enter the chosen Power Profile each time they are run. When they terminate, the system is returned to the previous power scheme. This lets you boost your PC's performance automatically when you need it, and save energy when you don't. You can do this by right-clicking on a process, using the 'When running' menu, or by using application menu opion at 'Options / Configure High Performance Power processes ...'. Entering this power scheume will disable CPU frequency scaling, giving you maximum performance. It will, however, drain the battery life of laptops, netbooks, and other portable computers faster than typical. When all 'High Performance' power mode processes end, the Power Profile is reset back to whatever it originally was.

Main Menu Options

Process Lasso's extensive menu system allows for configuration tweaks and other operations. The menus available are:

  • The application main menu
    Provides ability to to toggle numerous settings and more. These menu options are described below.
  • The process context menu (right-click)
    This menu lets you set specific options for a process.
  • The multi-process context menu (right-click)
    This menu lets you set specific options for several processes.
Using the Process Lasso application menu (the menu at the top) you can set a variety of options. They are explained below.

Item | Description
Main / Show/Hide Process Lasso main window | This will toggle the visibility of the main process management window. When the main window is minimized to the system tray, or otherwise not visible, it consumes less resources through a sleep like mode.
Main / Show balloon notifications | This toggle indicates to show, or not to show, popup balloon notifications in the system tray each time an action is taken.
Main / ProBalance enabled | This toggle allows for quick and easy enabling or disabling of ProBalance dynamic priority adjustments.
Main / All sounds off | This toggle allows you to quickly disable any sound notifications you have configured. Note that by default, no sounds events are enabled. See the ProBalance configuration dialog to enable them.
Main / Shut down Process Lasso | This terminates the Process Lasso GUI (processsupervisor.exe). You will no longer see the system tray icon, but process rules will still be enforced by the process governor (processgovernor.exe) unless you choose to terminate it to (you will be prompted).
File / Log Settings / | These items allow for toggling whether or not certain events are logged. You can also set the maximum number of log lines here.
File / Choose alternate configuration file | This allows you to select an alternate configuration file for use by Process Lasso. The INI configuration file includes all process rules and process lists.
File / Choose alternate log folder | This allows you to select an alternate location for the log of actions taken by Process Lasso.
File / Export configuration | This exports the INI configuration file to a folder of your choosing.
File / Import configuration | This imports an INI configuration file.
View / Show graph legend | Toggles the visibility of the legend/map that identifies what the colors of the graph indicate.
View / Hide process icons | This turns on or off the icons beside each process in the list. Turning OFF these icons conserves a considerable amount of memory. A restart of Process Lasso is required after changing this setting.
View / Technical columns first | This causes the process info columns to be reordered so that more technical columns are first in order. The user may also simply drag the column headers to whichever order they prefer. Process Lasso will remember the column order and sizes.
View / Reset column sizes | This resets the process info column sizes to their default values.
View / Reset column order | This resets the process info column ordering to the default state.
Options / General settings / Process Lasso startup options | This allows you to switch the startup type of the Process Lasso GUI. The core engine's startup type can be modified by running the installer.
Options / General settings / System tray icon | This allows modification of the system tray icon type. You can choose to either have a static icon, a representation of CPU utilization, or a representation of system responsiveness.
Options / General settings / System tray balloon popup notifications | This toggles whether you want balloon notification tips to be shown in the system tray area when certain actions are taken by Process Lasso. These are nice and informative, but may get annoying after a while, hence by default they are disabled.
Options / General settings / Refresh speed | Selects the desired refresh speed of the graphical user interface and the response time of the Process Governor. A lower value will cause a faster refresh speed and response time, but will utilize more CPU cycles. There is no recommended poll value here, and you can manually change it to whatever you like in the INI file.
Options / General settings / Reset language selection | This resets the language selection of Process Lasso. When Process Lasso is next launched, it will ask you which language you wish to use.
Options / General settings / Reset MessageBox choices | This resets the 'Do not ask again' type saved settings of all Message Box prompts within Process Lasso.
Options / General settings / Periodically check for product updates | Toggles whether Process Lasso should periodically check to see if updates are available. You will be notified before this check occurs, unless you configure it to proceed automatically (an option in the update checker dialog shown to you upon update check).
Options / ProBalance settings / Enable ProBalance priority adjustments | This toggle enables or disabled ProBalance. When enabled, background processes using a lot of CPU cycles will be temporarily lowered in priority, when appropriate, to prevent interruption of foreground processes.
Options / ProBalance settings / Configure ProBalance parameters | This invokes a dialog with configuration parameters for ProBalance, including CPU usage thresholds.
Options / ProBalance settings / Configure excluded processes | This allows for specification of which processes should be excluded from ProBalance priority adjustments. Any process specified here will never have its priority lowered by ProBalance. Wildcards are supported. Processes can also be added or removed from this list by right-clicking on them in the process list-view.
Options / ProBalance settings / Exclude foreground processes | This toggle indicates whether to exclude all foreground processes from ProBalance adjustments. The default value is ON, and it is recommended users leave this alone unless they have a need to switch it off.
Options / ProBalance settings / Exclude processes of non-normal priority | This toggle indicates whether to exclude processes of non-normal priority from ProBalance adjustments. The default value is ON.
Options / ProBalance settings / Exclude processes of non-normal priority | This toggle indicates whether to exclude service processes from ProBalance adjustments. The default value is OFF.
Options / ProBalance settings / Play a sound when action is taken | This toggle indicates whether to play a sound when a ProBalance action is taken. The default value is OFF.
Options / Foreground Boosting / Enable Foreground Process Priority Class Boost | This temporarily boosts the priority class of a process when one of its windows is in the foreground (has keyboard / mouse focus). This setting will boosts the priorities of all threads in that process. Note that this does not adjust Windows builtin foreground application boosting mechanism, which gives foreground applications longer time slices (see TweakScheduler for that). It is recommended you leave this option OFF unless you need it. The default value is OFF.
Options / Foreground Boosting / Enable Foreground Thread Priority Boost | This temporarily boosts the priority of an individual thread owning the foreground window. This can help increase responsiveness in some cases. Note that this does not adjust Windows builtin foreground application boosting mechanism, which gives foreground applications longer time slices (see TweakScheduler for that). It is recommended that you leave this option OFF unless you need it. The default value is OFF.
Options / Configure default priorities ... | This invokes a dialog allowing you to configure default priority classes of processes. Wildcards are supported. You can also set the default priority class of processes by right clicking on them in the process list-view.
Options / Configure default CPU affinities .... | This invokes a dialog allowing you to configure default CPU affinity of processes. The CPU affinity is the selection of CPUs the process is allowed to run on. Wildcards are supported. You can also set the default CPU affinities of processes by right clicking on them in the process list-view.
Options / Configure disallowed processes ... | This invokes a dialog box allowing you to choose which processes should be automatically terminated if they are found to be running. Wildcards are supported. You can also add processes to this list by right clicking on them in the process list-view.
Options / Configure process instance limits ... | This invokes a dialog box allowing you to place limits on the number of instances a program can have running in a user session. Wildcards are supported.
Options / More strictly enforce default priorities and affinities | This toggle is called 'Forced mode', and indicates to forcibly keep process default priorities and affinities applied, even if those processes try to adjust them back.
Options / Scheduled virtual memory trim .... | These menu options allow you to do a one time, or periodic, trim of the RAM used by all processes. This forces them to page their memory out to the swap file. As the memory is reaccessed by the processes, it is reloaded into RAM, incurring a performance penalty. Normally Windows manages virtual memory fine and manually forcing processes to page their memory out interferes with its optimality. However, for some users, this type of periodic operation may be useful.
Help / Check for updates | This invokes the update check dialog.
Help / About | This invokes the Process Lasso About box, which contains information about Process Lasso.
All content (c)2013 Bitsum Technologies and Jeremy Collake.


Using the INI Configuration File

The configuration options and process rules are stored in an INI configuration file. You can manually edit this INI file, import/export it, choose an alternate INI file to use, or pretend it doesn't exist. Usually system and network administrators or those with a lot of process rules need to manually tweak the INI file. Otherwise, the Process Lasso graphical user interface (GUI) will help you edit it.

Where is the INI configuration file located?

By default, Process Lasso automatically generates a configuration file for each user context in which it runs. These configuration files are located in the "ProcessLasso" subfolder of the respective user's application data folder. The log is also stored in this same location. The 'About' window of Process Lasso will show the full paths.

Administrators can change the path of the configuration file so that all instances of Process Lasso/Process Governor use the same configuration file. This can be done running the installer again and choosing a global configuration path in the second configuration dialog.

Sample Configuration File

#
# prolasso.ini configuration file [sample]
# any line not recognized is ignored
#
[OutOfControlProcessRestraint]
OocOn=True
TotalProcessorUsageBeforeRestraint=85
PerProcessUsageBeforeRestraint=20
TimeOverQuotaBeforeRestraint=2800
PerProcessUsageForRestore=10
PlayOnRestraint=C:\Windows\media\Windows Pop-up Blocked.wav
PlayOnRestore=C:\Windows\media\Windows Feed Discovered.wav
MinimumTimeOfRestraint=6000
TameOnlyNormal=True
LowerToIdleInsteadOfBelowNormal=False
ExcludeServices=False
PlaySoundOnRestraint=False
PlaySoundOnRestore=False
RestrainByAffinity=False
RestraintAffinity=
ExcludeForegroundProcesses=True
DoNotLowerPriorityClass=False
OocExclusions=
[GUI]
HideGraph=False
HideProcessIcons=False
ShowGraphLegend=True
ClearLogAtExit=False
[Performance]
ManageOnlyCurrentUser=True
ExitOnCloseWindow=False
BoostForegroundThread=False
BoostForegroundProcess=False
SoundsOff=True
AggressivelyTrimProcessLassoWorkingSet=True
CloseApplicationTimeoutSeconds=10
ForcedMode=False
[Updates]
CheckForUpdates=False
[SystemTrayIcon]
UseStaticIcon=False
ShowResponsivnessInTrayInsteadOfProcessorUsage=False
[Logging]
LogAllProcessesExecuted=False
LogProcessesDisallowed=True
LogDefaultPriorityAdjustments=True
LogDefaultAffinityAdjustments=True
LogOutOfControlProcessesRestrained=True
LogOutOfControlProcessesRestored=True
LogInstanceLimitTerminations=True
MaximumLogEntries=50
[MemoryManagement]
TrimAllProcessesAtThisIntervalInMs=0
[SysTrayBalloons]
ShowBalloons=False
BalloonTipDuration=10000
ShowBalloonsForOocPriorityRestoration=False
[Performance]
UpdateSpeed=1000
[ProcessAllowances]
AllowedProcesses=badprog2.exe
DisallowedProcesses=badprog*.exe
InstanceLimitedProcesses=word.exe,excel.exe
[ProcessDefaults]
DefaultPriorities=notepad.exe,above normal;calc.exe,above normal
DefaultAffinities=notepad.exe,1;calc.exe,0
MatchWildcardsToPathnames=False
[AdvancedRules]
WatchdogRules=someproc1.exe:billy;0;2;100;2000;0;0;0,someproc2.exe:joe;0;2;100;2000;0;0;0

Names encapsulated in '[' and ']' are groups of options. Each group has one or more options (called keys) that are set to values. Each key is optional, and if it doesn't exist the default value is used. Lines that do not contain a recognized key or group name are ignored. This file is not case sensitive.

Groups Overview

Group | Description | Keys
Performance | Configures performance related parameters. | UpdateSpeed
OutOfControlProcessRestraint | Configures parameters related to restraint of out of control processes (those consuming too many system resources). | OocOn TotalProcessorUsageBeforeRestaint PerProcessUsageBeforeRestraint TimeOverQuotaBeforeRestraint ProcessUsageQuotaCausingRestore OocExclusions
ProcessAllowances | Configures processes allowed and disallowed from execution. | AllowedProcesses DisallowedProcesses InstanceLimitedProcesses MatchDisallowedWildcardsToPathnames
ProcessDefaults | Configures default process priorities. | DefaultPriorities
Logging | Configures logging options. | LogAllProcessesExecuted LogProcessesDisallowed LogDefaultPriorityAdjustments LogOutOfControlProcessesRestrained LogInstanceLimitTerminations MaximumLogEntries
AdvancedRules | Sets more advanced process rules. | WatchdogActions

Keys

Defined keys (options) and their accepted values are as follows:
Group | Key | Description | Accepted Values and Format | Default Value
Performance | UpdateSpeed | The interval between enumerations of running processes by ProcessGovernor and ProcessLasso, in milliseconds. The lower the interval more responsive the applications are to changes in running processes, but more CPU cycles are used. | Any non-negative number. It is not recommended to exceed 4000ms or go below 500ms. It is recommended to keep this value the default. | 1500
Performance | ForcedMode | When forced mode is enabled, Process Lasso more aggressively enforces default priorities and affinities. Some applications change their own priorities, and this setting may be necessary in such cases. | 'True' if this feature is enabled, 'False' if not. | False
OutOfControlProcessRestraint | OocOn | Toggles out-of-control process restraint on or off. | 'True' if this feature is enabled, 'False' if not. | True
OutOfControlProcessRestraint | TotalProcessorUsageBeforeRestraint | The percentage of processor(s) in use that initiates a check of processes that may be out-of-control. While the total processor usage is below this threshold, processes are not restrained. This value includes usage of all processors on a system. | Range: 1-100. | 75
OutOfControlProcessRestraint | TimeOverQuotaBeforeRestraint | Number of milliseconds above ProcessorUsageQuota before the process priority is lowered. | Any non-negative number. | 1750
OutOfControlProcessRestraint | PerProcessUsageQuotaBeforeRestraint | The percentage of processor(s) in use by a process before its priority is reduced. Note that TotalProcessorUsageBeforeRestraint must have already been met. | 1-100. This value must be equal to or lesser than ProcessorUsageQuota. | 20
OutOfControlProcessRestraint | PerProcessUsageQuotaForRestore | The percentage of processor(s) in use by a process that is considered a safe enough value to restore a preciously restrained process to its original priority. | 1-100. This value must be equal to or lesser than ProcessorUsageQuota. | 5
OutOfControlProcessRestraint OocExclusions Processes excluded from out-of-control restraint. This is a comma delimitered list of process names. Wildcards are allowed.
Format:
process1,process2,process3
Example:
taskmgr.exe, game*.exe 		None.
AdvancedRules | WatchdogRules | Complex watchdog operations. | See below. | n/a
ProcessAllowances DisallowedProcesses Processes disallowed to execute. If a process is launched matching a specification in this list, it will be terminated. This is a comma delimitered list of process names. Wildcards are allowed.
Format:
process1,process2,process3
Example:
taskmgr.exe, game*.exe
ProcessAllowances AllowedProcesses Processes allowed to execute. These are only applicable if they match a process specification in the DisallowedProcesses key. For example, if notepad*.exe is lised in DisallowedProcesses and notepad1.exe is listed in AllowedProcesses, then notepad1.exe will be allowed to execute, but notrpad2.exe will not. This is a comma delimitered list of process names. Wildcards are allowed.
Format:
process1,process2,process3
Example:
taskmgr.exe, game*.exe 		None.
ProcessAllowances InstanceLimitedProcesses This variables provides a list of processes who should be limited to no more than a certain number of instances in a given user session. This is a comma delimitered list of process names, with semicolons used to indicate the maximum instance count.
Example:
myprogram.exe;2
ProcessDefaults DefaultPriorities A list of default priorities for processes. This is a comma delimitered list of process names and priorities. Wildcards are allowed. Valid priorities are:
  • Real time
  • High
  • Above normal
  • Normal
  • Below normal
  • Idle

Format:
process1,priority1,process2,priority2
Example:
taskmgr.exe, high,*.scr,idle

None.
Logging | LogAllProcessesExecuted | Toggle logging of all processes executed. | 'True' if enabled, 'False' if not. | False
Logging | LogProcessesDisallowed | Toggle logging of processes terminated because they were disallowed. | 'True' if enabled, 'False' if not. | True
Logging | LogDefaultPriorityAdjustments | Toggle logging of processes whose priority was adjusted to a configured default value. | 'True' if enabled, 'False' if not. | True
Logging | LogOutOfControlProcesses | Toggle logging of processes restrained because they were found to be out-of-control. | 'True' if enabled, 'False' if not. | True
Logging | MaximumLogEntries | The maximum number of log entries. When the log file reaches this limit, it is resized to 80% of this value. | Minimum reasonable value is 10. | 500
Logging | LogInstanceLimitTerminations | Set to log terminations of processes based on their instance limit, as configured. | 'True' if enabled, 'False' if not | True

Peformance note: Process Lasso uses its own high performance INI parsing algorithm.

Documentation of WatchdogRules

(formerly OverloadProcessActions)

WatchdogRules=someprocess.exe:billy;0;2;100;2000;0;0;0, ...

Field 1 | Field 2 | Field 3 | Field 4 | Field 5 | Field 6 | Field 7 | Field 8
Process PL 'actualized' base name and user | Action Type | Metric In Question | Threshold | Duration | Action Specific Value | Type Specific Value | Compare Type

Field 1: Process PL 'actualized' base name and user
This field accepts the base name for which you want the rule to match. It is actualized into the format that you see Process Lasso display in its GUI. That means that service names and/or service group names may also be included in the base name. The username may also be specified by using a colon as a delimter. Both accept wildcards. Examples, "myprocess*.exe:MyUser" - "myprocess*:My*".

Field 2: Action Type

  • TERMINATE =0
  • RESTART = 1
  • AFFINITY_CHANGE = 2
  • TRIM_VM = 3
  • SET_CPU_PRIORITY = 4
  • SET_IO_PRIORITY = 5
  • STOP_PROCESSING_RULES = 6
  • LOG = 7

Field 3: Metric In Question

  • CPU = 0
  • MEMORY = 1

Field 4: Threshold
This is the threshold for action. If Field 3 is CPU, then this is % of total CPU used of time. If Field 3 is Memory (1), then this is MEGABYTES.

Field 5: Duration
This is the length of time the process remains over threshold before the watchdog action is triggered, stored in milliseconds.

Field 6: Action Type Specific
This can be any number of values depending on the Action Type

    If set to change CPU priorities
  • Desired CPU priority class (numeric)
    If set to change I/O priorities
  • Desired I/O priority (numeric)
    If set to change CPU affinity
  • Desired CPU affinity (numeric, stored as a bitmask in decimal)

Field 7: Type Specific Value

    When a CPU metric we are looking at:
  • unused = 0
    When a virtual memory metric we are looking at:
  • WORKING SET = 0
  • COMMIT CHARGE = 1
  • TOTAL VIRTUAL MEMORY = 2
  • ANY MEMORY METRIC = 3

Field 8: Comparison Type

  • UNDEFINED = 0
  • LESS THAN = 1
  • GREATER THAN = 2

All content (c)2013 Bitsum LLC


Using the Process Governor Installer

Using the Process Governor Installer

The Process Governor installer is not currently a part of the Process Lasso distribution.