3 4
The term "bottleneck" is commonly used in discussions about software and hardware performance issues and refers to a performance-limiting condition caused by a component or set of components. For example, an I/O subsystem with insufficient capacity can cause a significant bottleneck—it can slow down the entire system. (We'll look at this scenario in detail in the section "I/O Subsystem" later in this chapter.)
Almost any component that is active in the system has the potential to cause a bottleneck. A bottleneck can be caused by a single component, such as one disk drive; a set of components, such as the I/O subsystem; or a combination of different components. For example, let's say you detect a bottleneck caused by the I/O subsystem and solve the problem by adding more disks to support the number of I/O operations occurring on the system (a hardware solution), by optimizing inefficient queries so that fewer I/O operations occur (a software solution), or by doing both. Once the I/O problem has been solved, you might find that you have a CPU-related bottleneck and need to increase the CPU speed or the number of CPUs.