SORT BY:

LIST ORDER
THREAD
AUTHOR
SUBJECT


SEARCH

IPS HOME


    [Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

    RE: ISCSI: flow control



    >  > Actually, the ugly problem is not made much less ugly by having
    >  > a credit system.  The problem is that the command receipt resources
    >  > of a "target" are oversubscribed during periods of high activity on
    >  > a properly configured system simply because of the statistical
    >  > characteristics of storage access.  The command resources are also
    >  > shared among multiple sessions.  The only way to guarantee credit
    >  > is to share the credit out among the multiple sessions.  This
    >  > necessarily leaves a lot of unused resources lying around for
    >  > sessions that are not very busy at a given instant and 
    >  unnecessarily
    >  > limits the capabilities of those sessions that are busy and would
    >  > otherwise be able to make constructive use of those resources.
    >  > The result is higher latencies and lower throughputs than you would
    >  > hope.  What you really need is dynamic credit allocation, 
    >  which will
    >  > always leave the possibility that a particular session may find
    >  > itself oversubscribed and forcing busy indications.  Which 
    >  is effectively
    >  > the mechanism SCSI uses today.
    >  
    >  Robert,
    >  
    >  As you say, the target can inform the initiator whenever it 
    >  wants, based on
    >  its
    >  own policy of resources management, that it can't handle no more
    >  command. It has the advantage to be dynamic and to take into account
    >  all the initiators.
    >  However, this mechanism has the following weaknesses:
    >  1) to inform the initiator to stop sending command, the target
    >       drops commands (and data). It implies retransmission
    >      It's a waste of bandwidth.
    
    This is one of many reasons I do not believe that sending immediate
    data is a constructive exercise.  Having to resend a few bytes of
    command information on those rare occasions that your system
    is so underconfigured that you run out of command queuing resources
    doesn't seem to me to be a major problem.  However, running out of
    data buffering (as opposed to command queuing) resources could be a 
    frequent occurrence and should be avoided by using the appropriate
    Ready To Receive indication from the device.
    
    >  
    >  2) the initiator after detecting [several] TASK SET FULL/BUSY status,
    >  must handle blindly the return to the full depth of the 
    >  command window.
    >  It does that in a slow way. At that time you under use the 
    >  capabilities
    >  of the LU.
    
    My point is that a properly implemented system does not do this.  Instead,
    it uses an optimistic start up algorithm.  By reserving
    one slot for each likely initiator, the SCSI device is always able
    to accept at least one command from that initiator.  Dynamically
    allocating the remainder of the command queuing resources allows any
    combination of additional commands from any initiator to be queued
    up until the queue is full (except for the reserved slots for initiators
    with no activity).  
    
    If one of those initiators then starts up, it starts by optimistically
    sending all its commands.  Most of the time, there will be plenty of
    space and the target will cheerfully absorb the commands.  Sometimes, the
    queue will be all the way full and only one command will be absorbed.
    If that is the case, the remaining commands are returned with a queue
    full indication.  Eventually, the one queue command from that initiator
    will be completed and sent back to the initiator.  At that time, it
    makes the assumption that lots of other commands have also been cleared
    out by other initiators, and sends to the target all the commands it
    wants to send.  By this time, there will again usually be plenty of
    space.  Some implementations may have a sense of how much queue space
    is typically available and will limit their first optimistic delivery
    of requests to some number, but if demand is high for a particular
    initiator, that initiator will push the numbers beyond that limit
    very quickly.
    
    If you have a situation where an initiator is frequently encountering
    no command queuing resources at a target, you have an improperly 
    configured system and must either:
    
    	a)  sacrifice performance (not total throughput, but individual
    		observed latency);
    
    	b)  reduce the number of initiators and/or the load provided by
    		each; or
    
    	c)  increase the capability of the target.
    
    Note that this has nothing to do with congestion management anywhere, 
    since all these packets are very small.
    


Home

Last updated: Tue Sep 04 01:07:06 2001
6315 messages in chronological order