• E
    ipv4: speedup inet_dump_ifaddr() · eec4df98
    Eric Dumazet 提交于
    Stephen Hemminger a écrit :
    > On Thu, 12 Nov 2009 15:11:36 +0100
    > Eric Dumazet <eric.dumazet@gmail.com> wrote:
    >
    >> When handling large number of netdevices, inet_dump_ifaddr()
    >> is very slow because it has O(N^2) complexity.
    >>
    >> Instead of scanning one single list, we can use the NETDEV_HASHENTRIES
    >> sub lists of the dev_index hash table, and RCU lookups.
    >>
    >> Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
    >
    > You might be able to make RCU critical section smaller by moving
    > it into loop.
    >
    
    Indeed. But we dump at most one skb (<= 8192 bytes ?), so rcu_read_lock
    holding time is small, unless we meet many netdevices without
    addresses. I wonder if its really common...
    
    Thanks
    
    [PATCH net-next-2.6] ipv4: speedup inet_dump_ifaddr()
    
    When handling large number of netdevices, inet_dump_ifaddr()
    is very slow because it has O(N2) complexity.
    
    Instead of scanning one single list, we can use the NETDEV_HASHENTRIES
    sub lists of the dev_index hash table, and RCU lookups.
    Signed-off-by: NEric Dumazet <eric.dumazet@gmail.com>
    Acked-by: NStephen Hemminger <shemminger@vyatta.com>
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    eec4df98
devinet.c 39.9 KB