Dreadful gmirror performance - suggested changes to 'prefer'
petefrench at ticketswitch.com
Thu May 8 11:37:02 UTC 2008
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
I havent looked at the code in detail, but I can't see that it would be too
difficult. What do people think ?
More information about the freebsd-stable