-
Bug
-
Resolution: Unresolved
-
Medium
-
None
-
None
-
3
-
9223372036854775807
Hybrid IO (LU-13802) switches large buffered reads and writes to direct IO on the client. It has been on by default since LU-18033.
On ZFS OSTs this is very slow. A direct IO write has to be committed before it completes, and ZFS commits on its transaction group interval, which is seconds, so a switched write sees roughly one DIO per commit interval. Buffered IO has no such wait, so on ZFS hybrid IO turns a fast path into a very slow one. Implementing ZIL support for this path would fix the cause, but that is a long term goal and not planned for 2.18.
For 2.18, hybrid IO should not switch to DIO when the file has a stripe on a ZFS OST. A client sysfs setting, llite.*.hybrid_io_to_zfs (default off), lets a site that knows its ZFS is fast (for example sync=disabled) turn the switch back on.
The client can already tell ZFS from ldiskfs targets: ZFS OSTs report MAX_LFS_FILESIZE as ocd_maxbytes at connect, ldiskfs OSTs report far less. No server change or wire change is needed, so this also covers servers already in the field.
An earlier version of the check was posted under LU-13802 as https://review.whamcloud.com/c/fs/lustre-release/+/52822, deep in a series, but it never landed and master has no ZFS check at all today. The new patch is standalone against master.
- is related to
-
LU-13802 New i/o path: Buffered i/o as DIO
-
- Open
-