• Eric Dumazet's avatar
    [IPV4]: Convert rt_check_expire() from softirq processing to workqueue. · 39c90ece
    Eric Dumazet authored
    On loaded/big hosts, rt_check_expire() if of litle use, because it
    generally breaks out of its main loop because of a jiffies change.
    
    It can take a long time (read : timer invocations) to actually
    scan the whole hash table, freeing unused entries.
    
    Converting it to use a workqueue instead of softirq is a nice
    move because we can allow rt_check_expire() to do the scan
    it is supposed to do, without hogging the CPU.
    
    This has an impact on the average number of entries in cache,
    reducing ram usage. Cache is more responsive to parameter
    changes (/proc/sys/net/ipv4/route/gc_timeout and
    /proc/sys/net/ipv4/route/gc_interval)
    
    Note: Maybe the default value of gc_interval (60 seconds)
    is too high, since this means we actually need 5 (300/60)
    invocations to scan the whole table.
    Signed-off-by: default avatarEric Dumazet <dada1@cosmosbay.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    39c90ece
route.c 73.8 KB