• E
    tcp: implement coalescing on backlog queue · 84d9095b
    Eric Dumazet 提交于
    mainline inclusion
    from mainline-v5.0-rc1
    commit 4f693b55c3d2d2239b8a0094b518a1e533cf75d5
    category: perf
    bugzilla: NA
    CVE: NA
    
    -------------------------------------------------
    In case GRO is not as efficient as it should be or disabled,
    we might have a user thread trapped in __release_sock() while
    softirq handler flood packets up to the point we have to drop.
    
    This patch balances work done from user thread and softirq,
    to give more chances to __release_sock() to complete its work
    before new packets are added the the backlog.
    
    This also helps if we receive many ACK packets, since GRO
    does not aggregate them.
    
    This patch brings ~60% throughput increase on a receiver
    without GRO, but the spectacular gain is really on
    1000x release_sock() latency reduction I have measured.
    Signed-off-by: NEric Dumazet <edumazet@google.com>
    Cc: Neal Cardwell <ncardwell@google.com>
    Cc: Yuchung Cheng <ycheng@google.com>
    Acked-by: NNeal Cardwell <ncardwell@google.com>
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    Signed-off-by: NBiaoxiang <yebiaoxiang@huawei.com>
    
    Conflicts:
    	net/ipv4/tcp_ipv4.c
    Reviewed-by: NMao Wenan <maowenan@huawei.com>
    Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
    84d9095b
snmp.h 12.6 KB