title="Make MAXPHYS dynamic (underway; stalled)"
NetBSD has a fixed, kernel-wide upper limit on transfer size, called MAXPHYS, which is currently
set to 64k on most ports. This is too small to perform well on modern
IDE and SCSI hardware; on the other hand some devices can't do more than 64k,
and in some cases are even limited to less (the Xen virtual block device for
example). Software RAID will also cause requests to be split in multiple
This limit should be per-IO-path rather than global and should be
discovered/probed as those paths are created, based on driver
capability and driver properties.
Much of the work has already been done and has been committed on the
tls-maxphys branch. What's needed at this point is mostly testing and
probably some debugging until it's ready to merge.
This project originaly suggested instead to make the buffer queue
management logic (which currently only sorts the queue, aka disksort)
capable of splitting too-large buffers or aggregating small contiguous
buffers in order to conform to device-level requirements.
Once the MAXPHYS changes are finalized and committed, this project may
be simply outdated. However, it may also be worthwhile to pursue this
idea as well, particularly the aggregation part.
CVSweb for NetBSD wikisrc <wikimaster@NetBSD.org> software: FreeBSD-CVSweb