• NeilBrown's avatar
    VFS: use synchronize_rcu_expedited() in namespace_unlock() · 22cb7405
    NeilBrown authored
    
    
    The synchronize_rcu() in namespace_unlock() is called every time
    a filesystem is unmounted.  If a great many filesystems are mounted,
    this can cause a noticable slow-down in, for example, system shutdown.
    
    The sequence:
      mkdir -p /tmp/Mtest/{0..5000}
      time for i in /tmp/Mtest/*; do mount -t tmpfs tmpfs $i ; done
      time umount /tmp/Mtest/*
    
    on a 4-cpu VM can report 8 seconds to mount the tmpfs filesystems, and
    100 seconds to unmount them.
    
    Boot the same VM with 1 CPU and it takes 18 seconds to mount the
    tmpfs filesystems, but only 36 to unmount.
    
    If we change the synchronize_rcu() to synchronize_rcu_expedited()
    the umount time on a 4-cpu VM drop to 0.6 seconds
    
    I think this 200-fold speed up is worth the slightly high system
    impact of using synchronize_rcu_expedited().
    
    Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> (from general rcu perspective)
    Signed-off-by: default avatarNeilBrown <neilb@suse.com>
    Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
    22cb7405
namespace.c 84.4 KB