SORT BY:

LIST ORDER
THREAD
AUTHOR
SUBJECT


SEARCH

IPS HOME


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

    TCP vs. UDP on SMP



    >    A multithread program will use different cpu in different thread. For
    example, we use one
    > cpu for receving packets to receive queue and the other CPU for sending
    packets from sending
    > queue. Hence we can have more CPU power in iSCSI path. An UDP program with
    its sending
    > and receiving can archive this situation. I think this will give a
    significant performance than TCP if
    > TCP can't use both CPUs proccesing power.
    > 
    >   TCP process its own queue in kernel mode. And will this TCP queue is
    processed with 2 CPU?
    
    The situation is somewhat more complex than this.  iSCSI is REQUIRED to
    implement
    congestion control (for more information, see draft-floyd-cong-04.txt, which
    is about to 
    be issued as a Best Current Practice RFC).  UDP by itself does not implement
    congestion
    control, and adding this to UDP may affect SMP efficiency because congestion
    control solutions
    use information from the network (receive queue) to control transmission
    (send queue);
    this couples the receive and send processing in a way that tends to reduce
    SMP
    effectiveness.  My recollection of published results on using multiple
    processors for
    TCP in Unix-like operating systems is that the big gains come from using
    different
    processors for different connections rather than handling send and receive
    on a single
    connection on different processors due in part to the send/receive coupling
    required
    by congestion control ... but it's been a while since I've checked/read this
    literature.
    
    So, I think the summary Q&A is approximately:
    Q1: Can a single TCP connection be processed by multiple CPUs?
    A1: Yes.
    Q2: Will this work as well as using separate CPUs to handle UDP send and
    receive?
    A2: Not in all cases, because TCP couples send and receive processing in a
    way that
    	UDP does not.
    Q3: Is the UDP solution with independent send and receive processing on two
    CPUs
    	applicable to iSCSI?
    A3: Probably not. It does not implement congestion control, and implementing
    congestion
    	control will result in some coupling of send and receive processing.
    
    Let me remind everyone that while congestion control and flow control may
    be implemented in roughly the same area of protocol code, they are rather
    different functions.  Flow control is concerned with the effective (e.g.,
    reliable
    and high performance) delivery of individual flows of traffic.  Congestion
    control
    is concerned with the response of the entire network as a system to overload
    conditions in which the network as a whole cannot deliver all of the offered
    traffic.
    
    --David
    
    ---------------------------------------------------
    David L. Black, Senior Technologist
    EMC Corporation, 42 South St., Hopkinton, MA  01748
    +1 (508) 435-1000 x75140     FAX: +1 (508) 497-8500
    black_david@emc.com       Mobile: +1 (978) 394-7754
    ---------------------------------------------------
    
    


Home

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