Uploaded image for project: 'Lustre'
  1. Lustre
  2. LU-21016

llite: hybrid IO should not switch BIO to DIO on ZFS OSTs

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Medium Medium
    • Lustre 2.18.0
    • 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.

            paf0186 Patrick Farrell
            paf0186 Patrick Farrell
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated: