Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am trying to come up with an optimum RAID read policy.

I've noticed that with a 64K RAID chunk size on a recent 1.5TB drive, where a given data is read in 64K chunks in a round-robin fashion from 3 underlying devices in a RAID1 setup, the total transfer rate is slightly slower than the transfer rate with a single disc alone (except that all three discs are used, so the overall system performance is likely to be worse).

Could the reason for such degraded performance be related to seek time?

How would one come up with a clever chunk size, such that performance of multiple drives is not wasted on needless seeks?

share|improve this question

migrated from Jan 29 '13 at 2:46

This question came from our site for professional and enthusiast programmers.

I'm doing this from a systems software engineering perspective (in the system I'm playing with, there's not even a setting to change this without editing a .c kernel source file and recompiling the kernel). I think this is more of system software/embedded development and algorithms than mere administration. – cnst Jan 29 '13 at 0:02

If you think about it, these 1.5TB drives have an average media transfer rate of about 100MB/s; which means that with sequential (but spotted) 64K reads in a RAID1 with 3 devices, they must be doing (100MB/s / 64K/seek / 3 drives), which turns out to be 533 seeks per second per drive.

Now, 7200 rpm drives require 8.3ms for a revolution, although some HGST specs also mention that the track-to-track seek time may be just a little under 1ms.

Basically, the question may come down to: how long is a seek that skips 64KB * (number of drives - 1)? Perhaps slightly more than 1ms?

From doing the actual reads at 1/3rd the speed each second, we have 667ms left to do 533 seeks, which seemingly indicates that each seek skipping 128KB may take 1.25ms, which seems like a reasonable number.

All of these numbers are seemingly consistent.

That might seem to indicate that doing round-robin 64KB reads and 128KB skips from each drive would indeed waste a lot of time on seeks, and RAID1 with 3 discs having the same overall read speed as individual discs.

Provided the RAID1 partitions are on the order of at least several dozen GBs, perhaps chunk size should be set to something between 64MB and 4GB, instead of 64KB?

share|improve this answer

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .