Date: Thu, 08 May 2008 12:37:00 +0100 From: Pete French <petefrench@ticketswitch.com> To: freebsd-stable@freebsd.org Subject: Re: Dreadful gmirror performance - suggested changes to 'prefer' Message-ID: <E1Ju4Qm-0005iL-7C@dilbert.ticketswitch.com>
next in thread | raw e-mail | index | archive | help
I am just looking at this again, and am in a bit of a mood for writing some patches, so I wanted to run the following idea past people as regards the priority system in the 'prefer' balancing method. Just to recap, creating a gmirror creates the first device with priority zero. Adding extra devices lets you set their priorities, but you cant set negative values. The upshot is that the first device in the mirror always has the lowest priority - so you cannot (for example) create a mirror with a local disc, subsequently add a remote disc, but then set the mirror up to prefer the local drive. I am thinking of a couple of changes - the first being the patch prroposed from Andrew Snow which would create the mirror with the priority at something other than zero (128 would be my preference) so that extra devices can be inserted both above and below it. This solves the problem for newly created mirrors as the priority can then be set as appropiate. The other change I wanted to make was to add a second 'prefer' mode to gmirror though - one which would prefer the *lowest* priority instead of the highest priority. I would probably rename the existing mode to 'prefer-high' (keeping 'prefer' as a synonym for backward compatibility) and add a 'prefer-low' as well. As an existing gmirror can have it's load balance algorithm changed on the fly, this lets you change which of the drives is preferred in an existing installationg. This is precisely what you need when switching between two machines so that the local and remote drives become reversed. I havent looked at the code in detail, but I can't see that it would be too difficult. What do people think ? -pete.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?E1Ju4Qm-0005iL-7C>