Storage requests are divided into high-priority requests generally
requiring low response time and low-priority requests generally requiring
high throughput. The high-priority requests are further divided into
several priorities reflecting different classes of service. The
low-priority requests are placed on a low-priority request queue where
they are executed in a throughput-optimizing order generally different
from their arrival order. For each high-priority request, if there are
not more than a predetermined number n (e.g., 1) outstanding requests for
execution by the disk drive of greater priority, then the request is
placed on a high-priority request queue where it is generally executed
ahead of requests on the low-priority request queue. If there are more
than n such greater-priority requests outstanding, then the high-priority
request is placed on the low priority request queue and included in the
throughput optimization along with the low-priority requests. The number
of priority levels for the high priority requests may be two or more, and
in one illustrated embodiment is equal to three.