3.2.3. Improving a CPU Shortage

When there is insufficient processing power available for the work needing to be done, you have two options:
  • Reducing the load
  • Increasing the capacity

3.2.3.1. Reducing the Load

Reducing the CPU load is something that can be done with no expenditure of money. The trick is to identify those aspects of the system load under your control that can be cut back. There are three areas to focus on:
  • Reducing operating system overhead
  • Reducing application overhead
  • Eliminating applications entirely
3.2.3.1.1. Reducing Operating System Overhead
To reduce operating system overhead, you must examine your current system load and determine what aspects of it result in inordinate amounts of overhead. These areas could include:
  • Reducing the need for frequent process scheduling
  • Reducing the amount of I/O performed
Do not expect miracles; in a reasonably-well configured system, it is unlikely to notice much of a performance increase by trying to reduce operating system overhead. This is due to the fact that a reasonably-well configured system, by definition, results in a minimal amount of overhead. However, if your system is running with too little RAM for instance, you may be able to reduce overhead by alleviating the RAM shortage.
3.2.3.1.2. Reducing Application Overhead
Reducing application overhead means making sure the application has everything it needs to run well. Some applications exhibit wildly different behaviors under different environments -- an application may become highly compute-bound while processing certain types of data, but not others, for example.
The point to keep in mind here is that you must understand the applications running on your system if you are to enable them to run as efficiently as possible. Often this entails working with your users, and/or your organization's developers, to help uncover ways in which the applications can be made to run more efficiently.
3.2.3.1.3. Eliminating Applications Entirely
Depending on your organization, this approach might not be available to you, as it often is not a system administrator's responsibility to dictate which applications will and will not be run. However, if you can identify any applications that are known "CPU hogs", you might be able to influence the powers-that-be to retire them.
Doing this will likely involve more than just yourself. The affected users should certainly be a part of this process; in many cases they may have the knowledge and the political power to make the necessary changes to the application lineup.

Note

Keep in mind that an application may not need to be eliminated from every system in your organization. You might be able to move a particularly CPU-hungry application from an overloaded system to another system that is nearly idle.