• npiggin@suse.de's avatar
    fs: mnt_want_write speedup · d3ef3d73
    npiggin@suse.de authored
    This patch speeds up lmbench lat_mmap test by about 8%. lat_mmap is set up
    basically to mmap a 64MB file on tmpfs, fault in its pages, then unmap it.
    A microbenchmark yes, but it exercises some important paths in the mm.
    
    Before:
     avg = 501.9
     std = 14.7773
    
    After:
     avg = 462.286
     std = 5.46106
    
    (50 runs of each, stddev gives a reasonable confidence, but there is quite
    a bit of variation there still)
    
    It does this by removing the complex per-cpu locking and counter-cache and
    replaces it with a percpu counter in struct vfsmount. This makes the code
    much simpler, and avoids spinlocks (although the msync is still pretty
    costly, unfortunately). It results in about 900 bytes smaller code too. It
    does increase the size of a vfsmount, however.
    
    It should also give a speedup on large systems if CPUs are frequently operating
    on different mounts (because the existing scheme has to operate on an atomic in
    the struct vfsmount when switching between mounts). But I'm most interested in
    the single threaded path performance for the moment.
    
    [AV: minor cleanup]
    
    Cc: Dave Hansen <haveblue@us.ibm.com>
    Signed-off-by: default avatarNick Piggin <npiggin@suse.de>
    Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
    d3ef3d73
namespace.c 55.2 KB