• Eric W. Biederman's avatar
    net: Batch inet_twsk_purge · b099ce26
    Eric W. Biederman authored
    This function walks the whole hashtable so there is no point in
    passing it a network namespace.  Instead I purge all timewait
    sockets from dead network namespaces that I find.  If the namespace
    is one of the once I am trying to purge I am guaranteed no new timewait
    sockets can be formed so this will get them all.  If the namespace
    is one I am not acting for it might form a few more but I will
    call inet_twsk_purge again and  shortly to get rid of them.  In
    any even if the network namespace is dead timewait sockets are
    useless.
    
    Move the calls of inet_twsk_purge into batch_exit routines so
    that if I am killing a bunch of namespaces at once I will just
    call inet_twsk_purge once and save a lot of redundant unnecessary
    work.
    
    My simple 4k network namespace exit test the cleanup time dropped from
    roughly 8.2s to 1.6s.  While the time spent running inet_twsk_purge fell
    to about 2ms.  1ms for ipv4 and 1ms for ipv6.
    Signed-off-by: default avatarEric W. Biederman <ebiederm@xmission.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    b099ce26
tcp_ipv4.c 64.4 KB