-
Notifications
You must be signed in to change notification settings - Fork 33
Description
Is your feature request related to a problem? Please describe.
Not relevant, this is a new feature. New multi-stream SSDs are widely used. These devices use data lifetime hints provided by the host to place different lifetimes data on different physical handles. By isolating data lifetimes, data with similar lifetimes are aggregated into the same GC (garbage collection) unit. During GC, the unit can be reset without additional copy operations, ultimately reducing write amplification and improving device endurance. We have developed a patch to support multi-stream devices.
Describe the solution you'd like
Modify the BeeGFS I/O path (including DIO, Buffer IO, and Page Cache IO) to enable data lifetime hints defined by upper-layer applications to be passed to multi-stream SSDs. This is achieved by leveraging the kernel's existing support for setting hints via Fcntl to implement hardware-level lifetime isolation. The modification includes adding a new field to the Message Structure to carry the kernel-supported i_write_hint field.
Describe alternatives you've considered
Maybe control the hardware directly? Like ioctl?
Additional context
The NVMe SSD (e.g. Flexible Data Placement SSD, TP4146) is supporting to recognize data lifetime information on device.
https://lwn.net/Articles/1018642/
Adding data lifetime information (hint) that passed to the devices to achieve lower write amplification and better performance.
This patches that add support in BeeGFS for data lifetime information.
Kernel file-systems (ext4, XFS, btrfs, F2FS) have already supported to set the hint by fcntl().
https://lkml.rescloud.iu.edu/2411.2/02654.html
https://lore.kernel.org/all/173099237654.321265.6588244483471280365.b4-ty@mit.edu/T/
https://lore.kernel.org/all/20231005194129.1882245-1-bvanassche@acm.org/