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 reads), 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: