Command Starvation is a solution to a problem with SCSI buses under high load. Unlike IDE and many other popular data buses, SCSI can queue multiple I/O commands at the devices. In the case of disks, a number of programs may be making simultaneous disk requests. Each of these requests (within reason) finds its way to the disk where the request is queued. SCSI devices are granted access on the basis of SCSI ID. If there is a conflict, the device with the highest numeric ID wins control of the bus.

In the case of unsaturated buses, command queueing results in quicker device response because delays waiting for command transmission are minimized and because disk devices can optimize the order of the requests to minimize head motion. If the bus is heavily loaded, this arrangement can lead to a situation where the high ID devices monopolize the bus and requests to devices with low numeric IDs are rarely serviced.

Classically, this problem has been dealt with by not assigning too many disks to a single SCSI string.

Command Starvation is a technique for achieving "fairer" usage of a heavily loaded SCSI bus by metering out commands gradually rather than by allowing command queues to build at the devices. Individual SCSI devices on a command starved bus operate less efficiently than without command starvation because they are unable to optimize disc accessing. But since the bus utilization is at or close to 100%, inefficiencies at the devices do not affect overall thruput. And work is allocated fairly across all the devices.

Return To Index Copyright 1994-2002 by Donald Kenney.