Date: Tue, 23 Mar 2010 00:36:07 +0100 From: Pawel Jakub Dawidek <pjd@FreeBSD.org> To: Poul-Henning Kamp <phk@phk.freebsd.dk> Cc: Alexander Motin <mav@FreeBSD.org>, freebsd-current@FreeBSD.org, Andriy Gapon <avg@icyb.net.ua>, freebsd-arch@FreeBSD.org Subject: Re: Increasing MAXPHYS Message-ID: <20100322233607.GB1767@garage.freebsd.pl> In-Reply-To: <5754.1269246223@critter.freebsd.dk> References: <4BA633A0.2090108@icyb.net.ua> <5754.1269246223@critter.freebsd.dk>
next in thread | previous in thread | raw e-mail | index | archive | help
--LpQ9ahxlCli8rRTG Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Mon, Mar 22, 2010 at 08:23:43AM +0000, Poul-Henning Kamp wrote: > In message <4BA633A0.2090108@icyb.net.ua>, Andriy Gapon writes: > >on 21/03/2010 16:05 Alexander Motin said the following: > >> Ivan Voras wrote: > >>> Hmm, it looks like it could be easy to spawn more g_* threads (and, > >>> barring specific class behaviour, it has a fair chance of working out= of > >>> the box) but the incoming queue will need to also be broken up for > >>> greater effect. > >>=20 > >> According to "notes", looks there is a good chance to obtain races, as > >> some places expect only one up and one down thread. > > > >I haven't given any deep thought to this issue, but I remember us discus= sing > >them over beer :-) >=20 > The easiest way to obtain more parallelism, is to divide the mesh into > multiple independent meshes. >=20 > This will do you no good if you have five disks in a RAID-5 config, but > if you have two disks each mounted on its own filesystem, you can run > a g_up & g_down for each of them. A class is suppose to interact with other classes only via GEOM, so I think it should be safe to choose g_up/g_down threads for each class individually, for example: /dev/ad0s1a (DEV) | g_up_0 + g_down_0 | ad0s1a (BSD) | g_up_1 + g_down_1 | ad0s1 (MBR) | g_up_2 + g_down_2 | ad0 (DISK) We could easly calculate g_down thread based on bio_to->geom->class and g_up thread based on bio_from->geom->class, so we know I/O requests for our class are always coming from the same threads. If we could make the same assumption for geoms it would allow for even better distribution. --=20 Pawel Jakub Dawidek http://www.wheelsystems.com pjd@FreeBSD.org http://www.FreeBSD.org FreeBSD committer Am I Evil? Yes, I Am! --LpQ9ahxlCli8rRTG Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.14 (FreeBSD) iEYEARECAAYFAkun/uYACgkQForvXbEpPzSKuwCguhkymDDx/xptSf8zaU8rQI/5 qmAAoIMNpThV3uN+larfBnQ/ZI3pqElZ =QCWg -----END PGP SIGNATURE----- --LpQ9ahxlCli8rRTG--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20100322233607.GB1767>