Date: Fri, 10 Dec 2010 16:45:20 +0200 From: Alexander Motin <mav@FreeBSD.org> To: Lev Serebryakov <lev@serebryakov.spb.ru> Cc: freebsd-hackers@freebsd.org Subject: Re: Where userland read/write requests, whcih is larger than MAXPHYS, are splitted? Message-ID: <4D023D00.10301@FreeBSD.org> In-Reply-To: <mailpost.1291988544.5326917.42118.mailing.freebsd.hackers@FreeBSD.cs.nctu.edu.tw> References: <mailpost.1291988544.5326917.42118.mailing.freebsd.hackers@FreeBSD.cs.nctu.edu.tw>
next in thread | previous in thread | raw e-mail | index | archive | help
Lev Serebryakov wrote: > I'm digging thought GEOM/IO code and can not find place, where > requests from userland to read more than MAXPHYS bytes, is splitted > into several "struct bio"? > > It seems, that these children request are issued one-by-one, not in > parallel, am I right? Why? It breaks down parallelism, when > underlying GEOM can process several requests simoltaneously? AFAIK first time requests from user-land broken to MAXPHYS-size pieces by physio() before entering GEOM. Requests are indeed serialized here, I suppose to limit KVA that thread can harvest, but IMHO it could be reconsidered. One more split happens (when needed) at geom_disk module to honor disk driver's maximal I/O size. There is no serialization. Most of ATA/SATA drivers in 8-STABLE support I/O up to at least min(512K, MAXPHYS) - 128K by default. Many SCSI drivers still limited by DFLTPHYS - 64K. -- Alexander Motin
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4D023D00.10301>