• Patrick Farrell's avatar
    LU-9846 lod: Add overstriping support · 591a9b4c
    Patrick Farrell authored
    Each stripe in a shared file in Lustre corresponds to a
    single LDLM extent locking domain and also to a single
    object on disk (and in the OSS page cache).  LDLM locks are
    extent locks, but there are still significant issues with
    false sharing with multiple writers.  On-disk file systems
    also have per-object performance limitations for both read
    and write.
    The LDLM limitation means it is best to have a single
    writer per stripe, but modern OSTs can be faster than a
    single client, so this restricts maximum performance unless
    special methods are used (eg, Lustre lock ahead).
    The on disk file system limitations mean that even if LDLM
    locking is not an issue (read and not write, or lockahead),
    OST performance in a shared file is still limited by having
    only one object per OST.
    These limitations make it impossible to get the full
    performance of a modern Lustre FS with a single shared
    This patch makes it possible to have >1 stripe on a given
    OST in each layout component.  This is known as
    overstriping.  It works exactly like a normally striped
    file, and is largely transparent to users.
    By raising the object count per OST, this avoids the single
    object limits, and by creating more stripes, also avoids
    the "single effective writer per stripe" LDLM limitation.
    However, it is only desirable in some situations, so users
    must request it with a special setstripe command:
    lfs setstripe -C [count] [file]
    Users can also access overstriping using the standard '-o'
    option to manually select OSTs:
    lfs setstripe -o [ost_indices] [file]
    Overstriping also makes it easy to test layout size limits,so we add a
    test for that.
    Signed-off-by: default avatarPatrick Farrell <pfarrell@whamcloud.com>
    Change-Id: I14bb94b05642b3542a965e84fda4615b997a4dea
    Reviewed-on: https://review.whamcloud.com/28425
    Tested-by: Jenkins
    Reviewed-by: default avatarAndreas Dilger <adilger@whamcloud.com>
    Tested-by: default avatarMaloo <maloo@whamcloud.com>
    Reviewed-by: default avatarBobi Jam <bobijam@hotmail.com>
    Reviewed-by: default avatarOleg Drokin <green@whamcloud.com>