Wednesday, January 19, 2011

Number of effective spindles in a RAID array?

Ok, simple question here. When doing performance calculations on RAID arrays that involve number of spindles (such as measuring disk queue length), how many "spindles" do I use?

The array in question is RAID 6. Should I use N-2 spindles? N-1 if it were RAID 5?

  • Depends on your formula, assuming its a good one you should use the total number of spindles in the array, minus hot-spares.

    Here's a good calculator btw: http://wmarow.com/strcalc/

    xeon : Nice calculator! Thanks for that link.
    Boden : What if the formula isn't taking RAID level into account? It seems like I wouldn't include parity drives in my spindle count... ?
    cagenut : Then its not much of a formula. MikeyB's answer below is a great explanation of why it matters. Also remember battery backed write cache makes a massive difference for intermittent/bursty writes. So a RAID-6 with bbwc will likely do much better on a relatively write-heavy database than a RAID-10 without it.
    From cagenut
  • You can't simply subtract the number of parity disks from number of total spindles and end up with useful results if you're doing IOP transaction calculations. There's more going on behind the scenes:

    RAID 10:

    • 1 frontend read translates into 1 backend IOP (d0 read)
    • 1 frontend write translates into 2 backend IOPS (d0 write, d1 write)

    RAID 5:

    • 1 frontend read translates into 1 backend IOP (d0 read)
    • 1 frontend write translates into 4 backend IOPS (d0 read, parity read, d0 write, parity write)

    RAID 6: (not 100% sure on these numbers - someone please correct me if they are off)

    • 1 frontend read translates into 1 backend IOP (d0 read)
    • 1 frontend write translates into 6 backend IOPS (d0 read, parity read, qarity read, d0 write, parity write, qarity write)

    So for example in a RAID set with 8 disks:

    • RAID10: 100 frontend writes translates to 200 IOPS on the backend (or 25/drive)
    • RAID5: 100 frontend writes translates to 400 IOPS on the backend (or 50/drive)
    • RAID6: 100 frontend writes translates to 600 IOPS on the backend (or 75/drive)

    Note that for the RAID10 calculations the method of "subtract number of parity spindles from total number of spindles" gives you the right answer. However, this falls over in RAID5/RAID6 calculations.

    From MikeyB

0 comments:

Post a Comment