Semi-preemptible I/O
Semi-preemptible I/O divides a disk request into shorter commands so that another request can be served at command boundaries.
A priority policy selects pending work; it does not make an executing command interruptible. The FAST 2003 design exposes intermediate scheduling points while each individual command remains non-preemptible. [1]
Chunking splits a transfer. JIT-seek delays dispatch to turn predicted rotational waiting into preemptible slack. Seek splitting inserts boundaries into a long head movement, but repeated acceleration can increase total seek time. These are distinct mechanisms, not three names for smaller reads. [1]
Under a uniform arrival over the entire operation, command durations t_i and fully preemptible slack s give mean residual blocking sum(t_i^2) / (2 * (sum(t_i) + s)). Longer commands are more likely to be encountered; averaging their half-durations without time weighting is wrong. This is blocking before service, not the arriving request's response time. [2]
For hypothetical commands [8], [4,4] and [7,1] ms with no slack or overhead, mean blocking is 4, 2 and 3.125 ms. All three occupy 8 ms, but the longest non-preemptible interval is 8, 4 and 7 ms respectively. These calculated examples are not device measurements. [4]
Host-visible completion also need not mean that the device is idle. Buffered writes can leave internal writeback ahead of a later request. The prototype's last-chunk FUA technique addresses its tested drive behavior; it is not a general flush of earlier unrelated writes. [1] [3]
Relations
Limitations
- Accurate positioning profiles and drive-cache behavior matter; actual preemption can add return seeks and reduce throughput. [2]
- The uniform-arrival formula omits other queued work, recovery activity and the new request's own service time. [2]
Citations
- Dimitrijevic, Rangaswami and Chang. Design and Implementation of Semi-preemptible IO. FAST 2003, pp. 145-158.
- Dimitrijevic, Rangaswami and Chang. Systems Support for Preemptive Disk Scheduling. IEEE TC 54(10), 2005, equations 1-2.
- Linux 6.16: Explicit volatile write back cache control, FUA and preflush scope
- Hesela: synthetic residual-blocking examples, generated by model.mjs
Further reading
Sources & caveats
- FAST 2003 evaluated a Linux user-space SCSI-generic prototype on a Seagate ST318437LW with synthetic and trace workloads. Its results are not guarantees for modern HDDs or SSDs.
- Research mechanism, not an available Linux scheduler name. Source synthesis and worked arithmetic only; no hardware benchmark or paper replication was performed.