On 7/3/2010 2:22 PM, Roy Sigurd Karlsbakk wrote:
------------------------------------------------------------------------
>To summarise, putting 28 disks in a single vdev is nothing you
would do if you want performance. You'll end >up with as many
IOPS a single drive can do. Split it up into smaller (<10
disk) vdevs and try again. If you need >high performance, put
them in a striped mirror (aka RAID1+0)
>A little addition - for 28 drives, I guess I'd choose four
vdevs with seven drives each in raidz2. You'll loose >space,
but it'll be four times faster, and four times safer. Better
safe than sorry....
Ok... so we've rebuilt the pool as 14 pairs of mirrors, each pair
having one disk in each of the two JBODs. Now we're getting about
500-1000 IOPS (according to zpool iostat) and 20-30MB/sec in
random read on a big database. Does that sounds right?
At first, it seems low. Can you try to benchmark that with bonnie++ or
iozone? You should be getting tenfold of that performance even for
database usage
Vennlige hilsener / Best regards
roy
Actually, that sound pretty much what should be expected. 7200RPM SATA
drives aren't going to be able to do more than 100 IOPS or so each under
ideal conditions. So, the best case for your setup would be 1400 IOPS.
(each pair of mirrors is going to have slightly more IOPS than a single
disk). So, you're reporting 40-70% of maximum, which is well within
expected range.
Similarly with the read speeds. If you're reading only small amounts
each time, then your aggregate throughput isn't going to be anywhere
near the theoretical streaming read. I've found that getting more than
5-10MB/s out of a single 7200RPM drive when doing random reads isn't
possible. I would possibly expect your aggregate total to be more than
20-30MB/s, but it's still entirely possible, especially if most of your
reads are small (which only span a couple of the mirrored pairs, rather
than the full "stripe" width).
So, on the whole, I think that's about the best you can expect, given
that your workload is NOT an optimal one for the types of disk you have.
Depending on your table layout and internal data design/schema, it might
actually be to your benefit to split your disks into multiple POOLS, and
put different DB tables on different pools. I'd suggest trying it out
with 3 pools of mirrors, and see what that gets you.
And, of course, as for all database work, you need to get your DB
indexes into RAM (or on a very fast SSD). Having them on disk is going
to severely penalize your performance.
--
Erik Trimble
Java System Support
Mailstop: usca22-123
Phone: x17195
Santa Clara, CA
_______________________________________________
zfs-discuss mailing list
zfs-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss