-
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 file. 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:
Patrick Farrell <pfarrell@whamcloud.com> Change-Id: I14bb94b05642b3542a965e84fda4615b997a4dea Reviewed-on: https://review.whamcloud.com/28425 Tested-by: Jenkins Reviewed-by:
Andreas Dilger <adilger@whamcloud.com> Tested-by:
Maloo <maloo@whamcloud.com> Reviewed-by:
Bobi Jam <bobijam@hotmail.com> Reviewed-by:
Oleg Drokin <green@whamcloud.com>
591a9b4c