In this paper, we have presented the design of Semi-preemptible IO, and proposed three techniques for reducing IO waiting-time--data transfer chunking, just-in-time seek, and seek-splitting. These techniques enable the preemption of a disk IO request, and thus substantially reduce the waiting time for a competing higher-priority IO request. Using both synthetic and trace workloads, we have shown that these techniques can be efficiently implemented, given detailed disk parameters. Our empirical studies showed that Semi-preemptible IO can reduce the waiting time for both read and write requests significantly when compared with non-preemptible IOs.
We believe that preemptible IO can especially benefit
multimedia and real-time systems, which are delay sensitive and which
issue large-size IOs for meeting real-time constraints.
We are currently implementing Semi-preemptible IO in Linux kernel.
We plan to further study its performance impact on
traditional and real-time disk-scheduling algorithms.