• Nicolas Dichtel's avatar
    fs/proc: use a rb tree for the directory entries · 710585d4
    Nicolas Dichtel authored
    When a lot of netdevices are created, one of the bottleneck is the
    creation of proc entries.  This serie aims to accelerate this part.
    
    The current implementation for the directories in /proc is using a single
    linked list.  This is slow when handling directories with large numbers of
    entries (eg netdevice-related entries when lots of tunnels are opened).
    
    This patch replaces this linked list by a red-black tree.
    
    Here are some numbers:
    
    dummy30000.batch contains 30 000 times 'link add type dummy'.
    
    Before the patch:
      $ time ip -b dummy30000.batch
      real    2m31.950s
      user    0m0.440s
      sys     2m21.440s
      $ time rmmod dummy
      real    1m35.764s
      user    0m0.000s
      sys     1m24.088s
    
    After the patch:
      $ time ip -b dummy30000.batch
      real    2m0.874s
      user    0m0.448s
      sys     1m49.720s
      $ time rmmod dummy
      real    1m13.988s
      user    0m0.000s
      sys     1m1.008s
    
    The idea of improving this part was suggested by Thierry Herbelot.
    
    [akpm@linux-foundation.org: initialise proc_root.subdir at compile time]
    Signed-off-by: default avatarNicolas Dichtel <nicolas.dichtel@6wind.com>
    Acked-by: default avatarDavid S. Miller <davem@davemloft.net>
    Cc: Thierry Herbelot <thierry.herbelot@6wind.com>.
    Acked-by: default avatar"Eric W. Biederman" <ebiederm@xmission.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    710585d4
generic.c 13.9 KB