Date: Tue, 12 Aug 2014 12:57:18 -0400 From: John Baldwin <jhb@freebsd.org> To: freebsd-hackers@freebsd.org Cc: "Pokala, Ravi" <rpokala@panasas.com> Subject: Re: IO chunking Message-ID: <201408121257.18814.jhb@freebsd.org> In-Reply-To: <D00F08A8.11B800%rpokala@panasas.com> References: <D00F08A8.11B800%rpokala@panasas.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Tuesday, August 12, 2014 2:56:26 am Pokala, Ravi wrote: > Hi folks, > > I'm doing moderately-large block IO (16KB - 1MB) directly against drive > devices (i.e. /dev/adaX), and I see that `iostat -d adaX' reports a > transaction size of at most 128KB. I believe this is because transactions > are limited to at most MAXPHYS bytes (128KB), and requests larger than > that are broken into smaller chunks; is that correct? If so, where does > that chunking happen? In low-level GEOM code (geom_io.c, geom_dev.c)? In > CAM? In the drive device driver? In VFS? Note that you can increase MAXPHYS (though you will want to ensure your storage controller drivers correctly report their maximum supported size and don't just hardcode MAXPHYS). The limit appears to be throughout the stack, though largely enforced at the top (e.g. in physio() before entering GEOM or the b_pages[] array in struct buf). Certainly I've seen folks run with MAXPHYS of 512k, but check your drivers. -- John Baldwin
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201408121257.18814.jhb>