Although they’re technically schedulers, the
noop (single-queue) and
none (multi-queue) schedulers don’t actually do anything—as soon as a request is waiting and the disk is available, the request is passed on.
The block layer itself will do a minimal amount of merging of pending requests before sending them to the scheduler, but it’s not common for this to happen.
Because this scheduler does no additional queuing, it’s actually a great choice for any single-process/threaded workload that does mostly synchronous I/O—no queuing means no extra CPU overhead for each I/O request.
Synchronous I/O includes traditional
reads (as opposed to async
DIRECT reads, and
writes that are either
DIRECT or followed by a
sync. If you’re running a single-process/threaded database, there’s a good chance that it could fall into this category. On the other hand, anything that does async
reads or bare
writes (i.e. not followed by a
sync) would probably benefit from some real queuing.
Of course, the only way to determine the right scheduler for your workload is to try each one out. Using I/O Manager, you can easily change a drive’s current scheduler to perform a comparison.
Read about the other schedulers: