• Ying Xue's avatar
    tipc: eliminate aggregate sk_receive_queue limit · 9da3d475
    Ying Xue authored
    As a complement to the per-socket sk_recv_queue limit, TIPC keeps a
    global atomic counter for the sum of sk_recv_queue sizes across all
    tipc sockets. When incremented, the counter is compared to an upper
    threshold value, and if this is reached, the message is rejected
    with error code TIPC_OVERLOAD.
    
    This check was originally meant to protect the node against
    buffer exhaustion and general CPU overload. However, all experience
    indicates that the feature not only is redundant on Linux, but even
    harmful. Users run into the limit very often, causing disturbances
    for their applications, while removing it seems to have no negative
    effects at all. We have also seen that overall performance is
    boosted significantly when this bottleneck is removed.
    
    Furthermore, we don't see any other network protocols maintaining
    such a mechanism, something strengthening our conviction that this
    control can be eliminated.
    
    As a result, the atomic variable tipc_queue_size is now unused
    and so it can be deleted.  There is a getsockopt call that used
    to allow reading it; we retain that but just return zero for
    maximum compatibility.
    Signed-off-by: default avatarYing Xue <ying.xue@windriver.com>
    Signed-off-by: default avatarJon Maloy <jon.maloy@ericsson.com>
    Cc: Neil Horman <nhorman@tuxdriver.com>
    [PG: phase out tipc_queue_size as pointed out by Neil Horman]
    Signed-off-by: default avatarPaul Gortmaker <paul.gortmaker@windriver.com>
    9da3d475
socket.c 46.4 KB