Before the pioneering work of [4,14], it was assumed
that the nature of disk IOs was inherently non-preemptible.
In [4], the authors proposed breaking up a large IO into
multiple smaller chunks to reduce the data transfer component
(
) of the waiting time (
) for
higher-priority requests. A minimum chunk size of one track was proposed.
In this paper, we improve upon the conceptual model of [4] in
three respects: 1) in addition to enabling preemption of the data
transfer component, we show how to enable preemption of
and
components; 2) we improve upon the bounds for zero-overhead preemptibility;
and 3) we show that making write IOs preemptible is not as
straightforward as it is for read IOs, but we propose one possible solution.
Weissel et al. [24] recently proposed Cooperative I/O, a novel IO semantics aimed to reduce the power consumption of storage subsystem by enabling applications to provide more information to OS scheduler. Similarly, in this paper we propose an IO abstraction to enable preemptive disk scheduling.
Semi-preemptible IO uses a just-in-time seek (JIT-seek) technique to make the rotational delay preemptible. JIT-seek can also be used to mask the rotational delay with useful data prefetching. In order to implement both methods, our system relies on accurate disk profiling [1,7,18,22,25]. Rotational delay masking has been proposed in multiple forms. In [8,26], the authors present rotational-latency-sensitive schedulers, which consider the rotational position of the disk arm to make better scheduling decisions. In [13,16,12], the authors present freeblock scheduling, wherein the disk arm services background jobs using the rotational delay between foreground jobs. In [19], Seagate uses a variant of just-in-time seek in some of its disk drives to reduce power consumption and noise. Semi-preemptible IO uses similar techniques for a different goal--to make rotational delays preemptible.
There is a large body of literature proposing IO scheduling policies for multimedia and real-time systems that improve disk response time [3,20,21,23]. Semi-preemptible IO is orthogonal to these contributions. We believe that the existing methods can benefit from using preemptible IO to improve schedulability and further decrease response time for higher-priority requests. For instance, to model real-time disk IOs, one can draw from real-time CPU scheduling theory. In [14], the authors adapt the Earliest Deadline First (EDF) algorithm from CPU scheduling to disk IO scheduling. Since EDF is a preemptive scheduling algorithm, a higher-priority request must be able to preempt a lower-priority request. However, an ongoing disk request cannot be preempted instantaneously. Applying such classical real-time CPU scheduling theory is simplified if the preemption granularity is independent of system variables like IO sizes. Semi-preemptible IO provides such an ability.