Check out the new USENIX Web site. next up previous
Next: The Method Up: Semi-preemptible IO Previous: Semi-preemptible IO


Chunking: Preempting $ {\bf T_{transfer}}$

The data transfer component ( $ T_{transfer}$) in disk IOs can be large. For example, the current maximum disk IO size used by Linux and FreeBSD is $ 128$ kB, and it can be larger for some specialized video-on-demand systems2. To make the $ T_{transfer}$ component preemptible, Semi-preemptible IO uses chunking.

Definition 3.1: Chunking is a method for splitting the data transfer component of an IO request into multiple smaller chunk transfers. The chunk transfers are serviced using separate disk commands, issued sequentially.

Benefits: Chunking reduces the transfer component of $ T_{waiting}$. A higher-priority request can be serviced after a chunk transfer is completed instead of after the entire IO is completed. For example, suppose a $ 500$ kB IO request requires a $ T_{transfer}$ of $ 25$ ms at a transfer rate of $ 20$ MBps. Using a chunk size of $ 20$ kB, the expected waiting time for a higher-priority request is reduced from $ 12.5$ ms to $ 0.5$ ms.

Overhead: For small chunk sizes, the IO bus can become a performance bottleneck due to the overhead of issuing a large number of disk commands. As a result, the disk throughput degrades. Issuing multiple disk commands instead of a single one also increases the CPU overhead for performing IO. However, for the range of chunk sizes, the disk throughput using chunking is optimal with negligible CPU overhead.




Subsections
next up previous
Next: The Method Up: Semi-preemptible IO Previous: Semi-preemptible IO
Zoran Dimitrijevic 2003-01-06