HomeFreeBSD

CTL: Allow I/Os up to 8MB, depending on maxphys value.

Description

CTL: Allow I/Os up to 8MB, depending on maxphys value.

For years CTL block backend limited I/O size to 1MB, splitting larger
requests into sequentially processed chunks. It is sufficient for
most of use cases, since typical initiators rarely use bigger I/Os.

One of known exceptions is VMWare VAAI offload, by default sending up
to 8 4MB EXTENDED COPY requests same time. CTL internally converted
those into 32 1MB READ/WRITE requests, that could overwhelm the block
backend, having finite number of processing threads and making more
important interactive I/Os to wait in its queue. Previously it was
partially covered by CTL core serializing sequential reads to help
ZFS speculative prefetcher, but that serialization was significantly
relaxed after recent ZFS improvements.

With the new settings block backend receives 8 4MB requests, that
should be easier for both CTL itself and the underlying storage.

MFC after: 2 weeks
Sponsored by: iXsystems, Inc.

(cherry picked from commit b06771aa667dadeffa0b0ec840af13b74d55e186)

Details

Provenance
mavAuthored on Dec 30 2021, 3:58 AM
Parents
rG972796d007c2: vfs_mountroot: Check for root dev before waiting
Branches
Unknown
Tags
Unknown