File:LUG2019-Lustre Overstriping Shared Write Performance-Farrell.pdf

From its earliest versions, Lustre has included striping files across multiple data targets (OSTs). This foundational feature enables scaling performance of shared-file I/O workloads by striping across additional OSTs. Current Lustre software places one file stripe on each OST and for many I/O workloads this behavior is optimal. However, faster OSTs backed by non-rotational storage show individual stripe bandwidth limitations due to the underlying file systems (ldiskfs, ZFS). Additionally, shared-file write performance, for I/O workloads that don’t use special optimizations like Lustre lockahead, may be limited by write-lock contention since Lustre file locks are granted per-stripe. This issue is becoming more pressing with new distributed raid technologies (DCR,GridRaid,dRaid) allowing larger OSTs, reducing the number of OSTs in a file system. Traditionally, the only solution has been to switch from shared file to file per process, which is not ideal or always possible.

A new Lustre feature known as ‘overstriping’ addresses these limitations by allowing a single file to have more than one stripe per OST. The presence of more than one stripe per OST allows the full bandwidth of a given OST to be exploited while still using one file. This presentation will discuss synthetic and application I/O performance using overstriping and implications for achieving expected performance of next-generation file systems in shared-file I/O workloads.