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