• Hugh Dickins's avatar
    [PATCH] shmem: no sbinfo for shm mount · f97cd2d9
    Hugh Dickins authored
    SGI investigations have shown a dramatic contrast in scalability between
    anonymous memory and shmem objects.  Processes building distinct shmem objects
    in parallel hit heavy contention on shmem superblock stat_lock.  Across 256
    cpus an intensive test runs 300 times slower than anonymous.
    
    Jack Steiner has observed that all the shmem superblock free_blocks and
    free_inodes accounting is redundant in the case of the internal mount used for
    SysV shared memory and for shared writable /dev/zero objects (the cases which
    most concern them): it specifically declines to limit.
    
    Based upon Brent Casavant's SHMEM_NOSBINFO patch, this instead just removes
    the shmem_sb_info structure from the internal kernel mount, testing where
    necessary for null sbinfo pointer.  shmem_set_size moved within CONFIG_TMPFS,
    its arg named "sbinfo" as elsewhere.
    
    This brings shmem object scalability up to that of anonymous memory, in the
    case where distinct processes are building (faulting to allocate) distinct
    objects.  It significantly improves parallel building of a shared shmem object
    (that test runs 14 times faster across 256 cpus), but other issues remain in
    that case: to be addressed in later patches.
    Signed-off-by: default avatarHugh Dickins <hugh@veritas.com>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    f97cd2d9
shmem.c 52.9 KB