]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
CTL: Allow I/Os up to 8MB, depending on maxphys value.
authorAlexander Motin <mav@FreeBSD.org>
Thu, 30 Dec 2021 03:58:52 +0000 (22:58 -0500)
committerAlexander Motin <mav@FreeBSD.org>
Thu, 30 Dec 2021 04:49:24 +0000 (23:49 -0500)
commitb06771aa667dadeffa0b0ec840af13b74d55e186
tree19b142ae877569288a3e7d673ac00eb800e1f836
parent61ff0a1f8145622a4db669715fc04e9358e643a6
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.
sys/cam/ctl/ctl_backend_block.c
sys/cam/ctl/ctl_tpc.c