G'day, all,
So, I've decided to migrate my home server from Linux+swRAID+LVM to
Solaris+ZFS, because it seems to hold much better promise for data integrity,
which is my primary concern.
However, naturally, I decided to do some benchmarks in the process, and I don't
understand why the results are what they are. I though I had a reasonable
understanding of ZFS, but now I'm not so sure.
I've used bonnie++ and a variety of Linux RAID configs below to approximate
equivalent ZFS configurations and compare. I do realise they're not exactly
the same thing, but it seems to me they're reasonable comparisons and should
return at least somewhat similar performance. I also realise bonnie++ is not
an especially comprehensive or complex benchmark, but ultimately I don't really
care about performance and this was only done out of curiosity.
The executive summary is that ZFS write performance appears to be relatively
awful (all the time), and it's read performance is relatively good most of the
time (with "striping", "mirroring" and raidz[2]'s with fewer numbers of disks).
Examples:
* 8-disk RAID0 on Linux returns about 190MB/s write and 245MB/sec read, while a
ZFS raidz using the same disks returns about 120MB/sec write, but 420MB/sec
read.
* 16-disk RAID10 on Linux returns 165MB/sec and 440MB/sec write and read, while
a ZFS pool with 8 mirrored disks returns 140MB/sec write and 410MB/sec read.
* 16-disk RAID6 on Linux returns 126MB/sec write, 162MB/sec read, while a
16-disk raidz2 returns 80MB/sec write and 142MB/sec read.
The biggest problem I am having understanding "why is it so", is because I was
under the impression with ZFS's CoW, etc, that writing (*especially* writes
like this, to a raidz array) should be much faster than a regular old-fashioned
RAID6 array.
I certainly can't complain about the read speed, however - 400-odd MB/sec out
of this old beastie is pretty impressive :).
Help ? Have I missed something obvious or done something silly ?
(Additionally, from the Linux perspective, why are reads so slow ?)
PS: Hardware specs are
Dual 2.8Ghz Xeon, 533Mhz bus, 2G RAM.
Two SuperMicro 8-port SATA controllers - AOC-SAT2-MV8 - on separate PCI-X buses
(Marvell 88SX6081 based,
http://www.supermicro.com/products/accessories/addon/AoC-SAT2-MV8.cfm)
16 Seagate 250G drives, 8M cache, ST3250820AS
Motherboard is a pull from an old Gateway dual Xeon server.
PPS: Benchmark data (this will look awful with a proportional font):
(With the Linux "RAID50" and "RAID60", I created two RAID5 and RAID6 arrays,
respectively, then create a RAID0 array over the top of them. For "RAID10" I
used the 'builtin' RAID10.)
Single drive
bonnie++ -d /mnt/ -s 8g -u0 -f
Version 1.03 --Sequential Output-- --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
MachineSize K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
csmith-desktop 8G 42807 21 25278 7 65191 6 118.4 0
--Sequential Create-- Random Create
-Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 + +++ + +++ + +++ + +++ + +++ + +++
csmith-desktop,8G,,,42807,21,25278,7,,,65191,6,118.4,0,16,+,+++,+,+++,+,+++,+,+++,+,+++,+,+++
zpool create internal c0t0d0
./bonnie++ -d /internal/ -s 8g -u0 -f
Version 1.03 --Sequential Output-- --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
MachineSize K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
nitrogen 8G 46916 18 27814 11 62103 8 212.5 0
--Sequential Create-- Random Create
-Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 15522 99 + +++ 24489 99 10140 99 + +++ 5196 99
nitrogen,8G,,,46916,18,27814,11,,,62103,8,212.5,0,16,15522,99,+,+++,24489,99,10140,99,+,+++,5196,99
8 disk RAID0, one controller, 128k stripe
Version 1.03 --Sequential Output-- --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
MachineSize K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
csmith-desktop 8G 190853 95 119364 42 245770 28 421.4
1
--Sequential Create-- Random Create
-Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 + +++ + +++ + +++ + +++ + +++ + +++
csmith-desktop,8G,