Next: Contributions
Up: Introduction
Previous: Introduction
Suppose a
kB read-request has to seek
cylinders requiring
of
ms, must wait for a
of
ms, and requires
of
ms at a
transfer rate of
MBps. The expected waiting time,
,
for a higher-priority request arriving during the execution of
this request, is
ms, while the maximum waiting time is
ms
(please refer to Section 3 for equations).
Semi-preemptible IO can reduce the waiting time by performing the
following operations.
It first predicts both the seek time and
rotational delay. Since the predicted seek time is long (
ms), it decides to split the seek operation into two sub-seeks,
each of
cylinders, requiring
ms each.
This seek splitting does not cause extra overhead in this case because the
can mask the
ms increased total seek time (
). The rotational delay is
now
ms.
With this knowledge, the disk driver
waits for
ms before performing a JIT-seek. This JIT-seek method makes
preemptible, since no disk operation is being performed. The
disk then performs the two sub-seek disk commands, and
then
successive read commands, each of size
kB,
requiring
ms each. A higher-priority IO request could be
serviced immediately after each disk-command. Semi-preemptible IO thus
enables preemption of an originally non-preemptible read IO request.
Now, during the service of this IO, we have two scenarios:
- No higher-priority IO arrives.
In this case, the disk does not incur additional overhead for
transferring data due to disk prefetching (discussed in
Sections 3.1 and 3.4).
(If
cannot mask seek-splitting, the system can
also choose not to perform seek-splitting.)
- A higher-priority IO arrives.
In this case, the maximum waiting time for the higher-priority request
is now a mere
ms, if it arrives during one of the two seek
disk commands. However, if the ongoing request is at the stage of
transferring data, the longest stall for the higher-priority request is
just
ms. The expected value for waiting time is only
ms, a significant reduction from
ms
(refer to Section 3 for details).
This example shows that Semi-preemptible IO substantially reduces the
expected waiting time and hence increases the preemptibility of disk access.
However, if an IO request is preempted to service a higher-priority request,
an extra seek operation may be required to resume service for the preempted IO.
The distinction between IO preemptibility and IO preemption is
an important one. Preemptibility enables preemption, but incurs little
overhead itself. Preemption will always incur overhead, but it will reduce
the service time for higher-priority requests.
Preemptibility provides the system with the choice
of trading throughput for short response time when
such a tradeoff is desirable. We explore the effects
of IO preemption further, in Section 4.3.
Next: Contributions
Up: Introduction
Previous: Introduction
Zoran Dimitrijevic
2003-01-06