|
In many circumstances, the perceived speed of computing is increasingly dependent on the performance of the I/O subsystem, underscoring the necessity for high-performance I/O solutions. Unfortunately, many operating systems provide inadequate support for applications, leading to poor performance and increased hardware cost of server systems. One source of the problem is the lack of integration among the various I/O subsystems and the applications. Each I/O subsystem utilizes its own buffering or caching mechanism, and applications generally maintain their own I/O buffers. This approach leads to performance-degrading anomalies such as repeated data copying and multiple buffering scenarios of data items. Repeated data copying causes high CPU overhead and limits the throughput of a server system. Multiple buffering of data wastes memory, reducing the space available for other data items that have to be cached. This size reduction causes higher cache miss rates, increasing disk accesses and reducing I/O throughput. Linux has multiple I/O schedulers. In the following section, we'll discuss the Linux implementation of the I/O subsystems, focusing on the various I/O schedulers available in the Linux framework. |
|