A question on gmirror and "load sharing"
Willem Jan Withagen
wjw at withagen.nl
Tue Nov 22 08:33:11 PST 2005
Hi,
I'm in the proces of running some "performance" tests on raw disks, as a small
configuration test to run my NFS-perfomance tests on a different setup.
(http://withagen.dyndns.org/FreeBSD/Performance)
So I build a mirror with gmirror and 2 80Gb WD-sata disks.
On that I run tests like (for reading):
----
while ($i < 16000)
dd of=/dev/null if=/dev/ad4 bs=5M count=1 iseek=$i
end
----
Giving me transfer times and rates that depend on the location of the head on
the platter. The graphs seem to suggest that this simple test is not at all
bad as an approach to this.
When you run this on an old BigFoot, which has a plexiglas view on the heads.
You really see the arm creeping slowly to the spindle.
However when I run this read test on a mirrored set of disks. I see (with
systat -vm 1) that data is only transfered from 1 disk for a long time. And
then several seconds later the other disk is used. This also happens if I
create the mirror with 'gmirror label -b load'. And as such the transferrate
of the mirror is equal or less than a single disk.
Perhaps I should test this with 'split'?
Or is this something internal in the kernel that a 5Mb request comes in, and
is forwarded as a whole request down the filesystem. And thus there is no
parallellism to take advantage off. (Even on an SMP the request is to one disk
only)
--WjW
More information about the freebsd-geom
mailing list