SORT BY:

LIST ORDER
THREAD
AUTHOR
SUBJECT


SEARCH

IPS HOME


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

    Re: iSCSI:out-of-order notification proposal



    
    Comments in text..
    
    "Mallikarjun C." wrote:
    > 
    > Sandeep,
    > 
    > It's just not a single SCSI info-bit that the target iSCSI layer should
    > look at for the optimization you're proposing - the LUN needs to be
    > examined as well since the task attributes are scoped per-LU.
    > 
    > In effect, what you're suggesting is an iSCSI-level per-LU ordering with
    > a session-global command sequencing scheme - that is a quite a bit of
    > complexity for targets to manage!
    
    Ah, I did not understand what you were getting at.
    
    Let me emphasize - this is just a HINT of what's in the pipeline, 
    and not a method to replace or duplicate SCSI functionality.
    
    In the (common?) case where you have an incoming stream of  
    unrelated tasks and a large command window, you might as well 
    pass them onto SCSI layer right away.  
    
    In the worst case, the hint will be a bad one and the target will 
    perform no better than is currently planned.
    
    A high-performance transport architecture with multiple connections and
    multi-NIC support is bound to see PDU reordering, and consequently
    suffer if it does not overcome this strict cmdSN ordering rule. 
    
    > 
    > BTW, synch and steering layer is *not* meant to help iSCSI (or SCSI)
    > process payloads out-of-order.  It is targetted only for out-of-order
    > data placements to reduce implementation costs, as the current draft
    > clearly states.
    
    ok..I havent looked at this section in depth yet :-)
    
    > 
    > Regards.
    > --
    > Mallikarjun
    > 
    > Mallikarjun Chadalapaka
    > Networked Storage Architecture
    > Network Storage Solutions Organization
    > MS 5668 Hewlett-Packard, Roseville.
    > cbm@rose.hp.com
    > 
    > >Answering two responses in one email.  This would be mighty
    > >easier if there was a whiteboard around here :-)
    > >
    > >> What exactly does it buy you? (that is not already in).
    > >
    > >The ability to execute subsequent PDUs in the presence of holes.
    > >(Holes due to multiple connections OR due to skipping onto next marker)
    > >
    > >If the hole is due to a REAL ordering issue (e.g. ORdered task
    > >was lost) then the target will pause for the hole to fill.
    > >
    > >But if the hole is due to simple task, then the target
    > >can continue execution of the new commands it is receiving.
    > >
    > >Currently, target will *always* pause due to cmdSN ordering,
    > >which is somewhat like a primitive microprocessor which wont
    > >reorder its instruction stream, though its feasible.
    > >
    > >>
    > >> And FWIW David (B) raised a question related to the requirements doc.
    > >
    > >My mistake, the rephrasing of requirements seemed to match the intent
    > >of previous discussions on why total cmdSN ordering is overkill.
    > >That was the only point i was trying to reinforce.
    > >
    > >>
    > >> Julo
    > >
    > >
    > >
    > >"Mallikarjun C." wrote:
    > >>
    > >> Sandeep,
    > >>
    > >> Some comments on your proposal.
    > >>
    > >> - The "strict_order" flag that you mention appears to carry
    > >>   information that's already contained by the SCSI task attributes
    > >>   (ATTR field).
    > >
    > >But now the information is also contained in PDUs following it.
    > >(e.g. A simple command PDU may also have strict_order=1)
    > >
    > >If an Ordered task PDU is lost, the target *knows* there is a REAL
    > >ordering issue (later PDUs have info) so it must wait for the hole
    > >to be filled.
    > >
    > >>
    > >> - This proposal requires the target iSCSI layer to look at more
    > >>   variables (SCSI-level information in that) for making its
    > >>   sequencing decisions.
    > >
    > >Only one more bit.. to decide if the command can be passed
    > >to SCSI layer now or later in cmdSN sequence.
    > >
    > >To build an efficient SCSI transport, some hints would need
    > >to be passed between layers.
    > >
    > >>
    > >> - Simple commands (intended to be) received prior to an Ordered
    > >>   command must be executed before the Ordered one.  If you lose a
    > >>   Simple command, you must wait for it before you act on the Ordered
    > >>   that you received out-of-order.
    > >
    > >Good pt.  This, I forgot to mention below.  The target must clear
    > >out all PDUs received with strict-order=0 before commencing
    > >execution of PDUs received with strict-order=1.
    > >
    > >>
    > >> This appears more an implementaion optimization where desired than
    > >> something we want to get into the draft.  You are proposing that
    > >> even in the absence of errors, iSCSI should make ordering decisions
    > >> based on SCSI task attributes.  I disagree with that.
    > >
    > >The optimization needs a bit in the PDU, otherwise I wouldnt
    > >have gone to the trouble of writing this out!  And you would agree
    > >that there are a bunch of TCP optimizations in various drafts.
    > >
    > >Lastly, what is the point in building a sync-and-steering layer to
    > >skip ahead in the command stream if you cannot execute that next command
    > >?
    > >With this little more work, you could as well continue execution.
    > >
    > >> --
    > >> Mallikarjun
    > >>
    > >> Mallikarjun Chadalapaka
    > >> Networked Storage Architecture
    > >> Network Storage Solutions Organization
    > >> MS 5668 Hewlett-Packard, Roseville.
    > >> cbm@rose.hp.com
    > >>
    > >> >This is a proposal to allow the initiator to inform the target
    > >> >if out-of-order execution within the command stream is possible.
    > >> >
    > >> >The target execution can rotate between "in-cmdSN-order" and
    > >> >"out-of-order" during runtime as informed by the initiator..
    > >> >
    > >> >Appreciate comments on subtleties that I may have missed.
    > >> >
    > >> >thanks,
    > >> >-Sandeep
    > >> >
    > >> >http://ips.pdl.cs.cmu.edu/mail/msg03152.html
    > >> >   by Costa provides a good summary of the issue at hand.
    > >> >
    > >> >http://ips.pdl.cs.cmu.edu/mail/msg04255.html
    > >> >  David provides the "new" reqts.  In particular, this one
    > >> >
    > >> >   > MUST specify the ability to preserve ordered delivery
    > >> >   > of SCSI commands even in the presence of transport
    > >> >   > errors.  A mechanism MUST be provided to allow
    > >> >   > Initiators and Targets to negotiate this preservation
    > >> >   > on a per-session or finer granularity basis
    > >> >
    > >> >Note :
    > >> >======
    > >> >1) This does not rely on SCSI cmdRN, but operates at iSCSI level.
    > >> >2) Flow control using cmdSN works as designed.
    > >> >3) This solution is not a per-session negotiation option but can be
    > >> >   disabled and re-enabled again at "runtime" by the initiator if it
    > >> >   notices that Ordered/HOQ tasks (or any other need) have entered
    > >> >   the iSCSI command stream which is being dispatched.
    > >> >
    > >> >Problem:
    > >> >=========
    > >> >In case of out-of-order arrival or digest errors, it is NOT possible
    > >> >to know if the initiator had sent an ordered command before the one
    > >> >which was received.
    > >> >
    > >> >Solution:
    > >> >=========
    > >> >To notify target of presence of in-flight ordered commands, we set
    > >> >a flag on *every* PDU following the ordered command *until* the target
    > >> >moves it expCmdSN above the cmdSN of the ordered command.  The
    > >> >expCmdSN indicates target has found the ordered command.
    > >> >
    > >> >( Those familiar with "ECN over IP" (Floyd, et al) may see this is
    > >> >similar to how a congestion bit keeps being set until the sender acks
    > >> >that it has received the notification)
    > >> >
    > >> >Figuratively:
    > >> >=============
    > >> >So, assume there was a new "strict_order" flag in the BHS.
    > >> >In the figure below, braces shows value of (cmdSN, strict_order)
    > >> >
    > >> >Initiator                       Target
    > >> >---------                       -------
    > >> >
    > >> >simple cmd (cmdSN=100, strict_order=0) ->
    > >> >simple cmd (101, 0) ->
    > >> >simple cmd (102, 0) ->
    > >> >
    > >> >   these may get reordered or have digest errors ->
    > >> >
    > >> >                        target executes as they arrive
    > >> >                             exec simple cmd(102, 0)
    > >> >                             exec simple cmd(100, 0)
    > >> >                             exec simple cmd(101, 0)
    > >> >
    > >> >Now say the initiator wants to send a HOQ task.
    > >> >It sets strict_order=1 on all PDUs
    > >> >
    > >> >ordered cmd (103, 1) ->
    > >> >simple  cmd (104, 1) ->
    > >> >simple  cmd (105, 1) ->
    > >> >                        in case of reordering or digest errors
    > >> >                        target must wait & execute in cmdSN order!
    > >> >simple  cmd (106, 1) ->
    > >> >simple  cmd (107, 1) ->
    > >> >
    > >> >         <---- now target sends expCmdSN=103
    > >> >
    > >> >This implies target has seen command(cmdSN=103) and target will do the
    > >> >appropriate ordering and delivery to SCSI layer.  This is left to
    > >> >the target implementation to tackle.
    > >> >
    > >> >Initiator checks (expCmdSN >= cmdSN of ordered cmd) and then resets
    > >> >strict_order to zero for all subsequent PDUs.
    > >> >
    > >> >simple  cmd (108, 0) ->
    > >> >simple  cmd (109, 0) ->
    > >> >
    > >> >Other issues:
    > >> >=============
    > >> >If the basic scheme is ok, then we could later tackle other questions
    > >> >"what about multiple ordered commands" and the like..
    > >
    


Home

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