Adam Lindsay wrote:
Hi folks. I'm looking at putting together a 16-disk ZFS array as a server, and 
after reading Richard Elling's writings on the matter, I'm now left wondering 
if it'll have the performance we expect of such a server. Looking at his 
figures, 5x 3-disk RAIDZ sets seems like it *might* be made to do what we want 
(saturate a GigE link), but not without some tuning....

Am I right in my understanding of relling's small, random read model? For mirrored configurations, read performance is proportional to the number of disks. Write performance is proportional to the number of mirror sets.
For parity configurations, read performance is proportional to the number of 
RAID sets.  Write performance is roughly the same.

Clearly, there are elements of the model that don't apply to our sustained read/writes, so does anyone have any guidance (theoretical or empirical) on what we could expect in that arena?
I've seen some references to a different ZFS mode of operation for sustained 
and/or contiguous transfers. What should I know about them?

Finally, some requirements I have in speccing up this server:
My requirements:
. Saturate a 1GigE link for sustained reads _and_ writes
...  (long story... let's just imagine uncompressed HD video)
. Do it cheaply
My strong desires:
. ZFS for its reliability, redundancy, flexibility, and ease of use
. Maximise the amount of usable space
My resources:
. a server with 16x 500GB SATA drives usable for RAID

What you need to know is what part of your workload is
random reads.  This will directly determine the number
of spindles required.  Otherwise, if your workload is
sequential reads or writes, you can pretty much just use
an average value for disk throughput.... with your drives
and adequate CPU, you'll have absolutely no problems
_melting_ a 1GB net.  You want to think about how many
disk failures you want to handle before things go south...
there's always a tension between reliability and storage
and performance.

Consider 2 striped sets of raidz2 drives - w/ 6+2 drives in each
set, you get 12 drives worth of streaming IO (read or write).
That will be about 500 MB/sec, rather more than you can get
though a 1 GB net.  That's the aggregate bandwidth; you should
be able to both sink and source data at 1Gb/sec w/o any difficulties
at all.

If you do a lot of random reads, however, that config will
behave like 2 disks in terms of IOPs.  To do lots of IOPs,
you want to be striped across lots of 2 disk mirror pairs.

My guess is if you're doing video, you're doing lots of
streaming IO (eg you may be reading 20 files at once, but
those files are all being read sequentially).  If that's
the case, ZFS can do lots of clever prefetching.... on
the write side, ZFS due to its COW behavior will just
handle both random and sequentially writes pretty
much the same way.

- Bart





--
Bart Smaalders                  Solaris Kernel Performance
[EMAIL PROTECTED]               http://blogs.sun.com/barts
_______________________________________________
zfs-discuss mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss

Reply via email to