Two Paths to Server Performance: I/O scheduler and file system selection can boost SUSE Linux Enterprise server performance
By Matthias G. Eckermann and Bill Tobey, Novell Connection Magazine – July 2010
Here’s an excerpt:
The Novell approach to assembling a SUSE Linux server distribution has always been to provide a wide range of the best packages and tools available from the community. Our goal is to give IT organizations the most flexible and versatile resource set for configuring and optimizing high-performance servers for a complete range of data center applications.
This article will explore two often-overlooked areas where SUSE Linux Enterprise Server provides multiple options that administrators can exploit to enhance server performance: the I/O scheduler and the file system.
Meet Your I/O Scheduler
The I/O scheduler is the part of the kernel that handles read / write access to block storage devices—a USB stick, local disk, NAS filer, SAN, network file system and any other storage environment that holds data in blocks. A scheduler queues and sequences the execution of read-write requests in order to manage mechanical latency (the seek time related to head travel around the disk) and optimize data delivery performance. Its bag of tricks includes three techniques for manipulating the request queue:
- Request merging – Requests for data in adjacent blocks can be combined to improve throughput by reducing both seek time and the total number of syscalls required to service a request.
- Directional (elevator) reordering – Requests can be reordered based on location, to maintain head movement in one direction for as long as possible, using the same control methodology as an elevator to avoid service starvation at the disk peripheries.
- Priority reordering – Requests can be sequenced according to various priority schemes, such as a start-of-execution deadline assigned to each request at time of receipt.
The Four Types of Linux I/O Schedulers
There are four types of Linux I/O schedulers, each of which implements the basic sequencing techniques in different ways and combinations, providing significant variations in I/O performance with different application workloads.