---

Tuning CFQ – What Station is That?

“Recall that the CFQ scheduler was written in response to some
potential problems with the deadline controller. In particular,
from an interview with Jens Axboe, the developer of CFQ, deadline,
and a few other IO schedulers, Jens stated, “While deadline worked
great from a latency and hard drive perspective, it had no concept
of individual process fairness.” So one process that was doing a
great deal of IO could cause other applications to have their IO
starve.

“The CFQ scheduler created the concept of having queues for each
process. These queues are created as needed for a particular
process. Also, while perhaps not new, the scheduler divided the
concept of IO into two parts, Synchronous IO and Asynchronous IO
(AIO). Synchronous IO is important because the application stops
running until the IO request is finished. In other words,
synchronous IO “blocks” the execution of the application until it
is done. This is fairly common in read operations because an
application may need to read some input data prior to continuing
execution.

“On the other hand, AIO allows an application to continue
operation because the result of the IO operation returns
immediately. So rather than wait for confirmation that the
application’s IO request has succeeded as in the case of
synchronous IO, for AIO the result is returned immediately even if
the IO operation has not yet finished. This is potentially very
useful for write operations and allows the application to overlap
IO with computation (helps efficiency – that is, it can improve run
time).”

Complete
Story

Get the Free Newsletter!

Subscribe to Developer Insider for top news, trends, & analysis