|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] RE: Command Queue Depth (was asymmetric/Symmetric)> -----Original Message----- > From: julian_satran@il.ibm.com [mailto:julian_satran@il.ibm.com] > Sent: Thursday, September 07, 2000 6:11 AM > To: ips@ece.cmu.edu > Subject: RE: Command Queue Depth (was asymmetric/Symmetric) > > snip > > As for SCSI queue length I assumed that the busy or queue full status > followed by an Asynch Event > message indicating readiness is the mechanism provided by > SCSI to regulate > the command flow. Actually, the approach was somewhat different, and is still only a recommendation and not a requirement. Every logical unit (not every target) was required to reserve at least one command queuing buffer for each logged-in initiator so that each logical unit could always accept at least one command. Then the queue was stuffed full until TASK SET FULL status was presented. At that time, as each initiator encountered TASK SET FULL, it would back off until a previously queued command was completed. At that time (serving the purpose of the asynchronous event notification hypothesized above), the queue could then be restuffed. This back-off provided maximum queuing for maximum throughput and allowed any particular initiator to access all available resources at the time they were needed. Given the bursty (self-similar statistical) nature of storage accesses, this appeared to be about the best we could do. If a system ran into continuing problems, additional resources (more devices, more initiators, more links) were the only reasonable solution to maintain the desired level of performance. The appropriate text from SAM-2 is provided here for your ASCII reference. Clause 5.2 Status TASK SET FULL. This status shall be implemented if the logical unit supports the creation of tagged tasks (see 4.9). This status shall not be implemented if the logical unit does not support the creation of tagged tasks. When the logical unit has at least one task in the task set for an initiator and a lack of task set resources prevents entering a newly received tagged task from that initiator in the task set, TASK SET FULL shall be returned. When the logical unit has no task in the task set for an initiator and a lack of task set resources prevents entering a newly received tagged task from that initiator in the task set, BUSY should be returned. When the logical unit has at least one task in the task set and a lack of task set resources prevents entering a newly received untagged task in the task, BUSY should be returned. The logical unit should allow at least one queued command for each supported initiator that has identified itself to the target by a protocol specific procedure or by the successful transmission of a command.
Home Last updated: Tue Sep 04 01:07:30 2001 6315 messages in chronological order |