semi-preemptible-io · research · also semi-preemptible disk I/O

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

related
I/O scheduler, Freeblock scheduling, Rotational latency, Seek time, Write-back cache

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

  1. Dimitrijevic, Rangaswami and Chang. Design and Implementation of Semi-preemptible IO. FAST 2003, pp. 145-158. (accessed 2026-11-09)
  2. Dimitrijevic, Rangaswami and Chang. Systems Support for Preemptive Disk Scheduling. IEEE TC 54(10), 2005, equations 1-2. (accessed 2026-11-09)
  3. Linux 6.16: Explicit volatile write back cache control, FUA and preflush scope (accessed 2026-11-09)
  4. Hesela: synthetic residual-blocking examples, generated by model.mjs (accessed 2026-11-09)

Further reading

  1. Hesela: residual-blocking calculation source (Node.js) (accessed 2026-11-09)
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.

JSON: /data/terms/semi-preemptible-io.json

Published by Hesela team · Updated

Report a correction · Editorial standards · Reuse guidance

Cite this page
Hesela team. Semi-preemptible I/O. Hesela. 2026-11-09. https://hesela.dev/terms/semi-preemptible-io/