• H
    [TCPv4]: Improve BH latency in /proc/net/tcp · a7ab4b50
    Herbert Xu 提交于
    Currently the code for /proc/net/tcp disable BH while iterating
    over the entire established hash table.  Even though we call
    cond_resched_softirq for each entry, we still won't process
    softirq's as regularly as we would otherwise do which results
    in poor performance when the system is loaded near capacity.
    
    This anomaly comes from the 2.4 code where this was all in a
    single function and the local_bh_disable might have made sense
    as a small optimisation.
    
    The cost of each local_bh_disable is so small when compared
    against the increased latency in keeping it disabled over a
    large but mostly empty TCP established hash table that we
    should just move it to the individual read_lock/read_unlock
    calls as we do in inet_diag.
    Signed-off-by: NHerbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    a7ab4b50
tcp_ipv4.c 61.1 KB