[ ... ]
>> What is the stripe spindle width of a 7 drive mdraid near array?
> With "near" layout, it is basically 3.5 spindles. [ ... ]
[ ... ]
>> [ ... ] The n,r rotate the data and mirror data writes around
>> the 4 drives. So it is possible, and I assume this is the
>> case, to write data and mirror data 4 times, making the
>> stripe width 4, even though this takes twice as many RAID IOs
>> compared to the standard RAID10 lyout. [ ... ]
> I think you are probably right here - it doesn't make sense to
> talk about a "3.5" spindle width.
As per my previous argument, the XFS stripe width here does not
matter, so the question here is really:
"What is the IO transaction size that gives best sustained
sequential single thread performance with 'O_DIRECT'?"
Note that the "with 'O_DIRECT'" qualification matters a great
deal because otherwise the page cache makes the application's IO
size largely irrelevant, making relevant the rate at which it
would issue read or write requests.
While I understand why a tempting answer is 3.5 *chunks*, the
best answer is 7 chunks because:
* With a '2' layout the chunk pattern repeats every 14 chunks
(more generally over the GCF of '2' and the number of
devices in a stripe) so we need only consider two.
* In the first stripe there are 3 pairs and at end one half
pair, and in the second stripe there is one half pair and 3
pairs.
* It is pointless for *single threaded* access to read both
chunks in a mirror pair. Without loss of generality, let's
assume that we read just the first.
* Then in the first stripe we can read 4 chunks in parallel,
and in the second stripe 3, as the first chunk of that stripe
is a copy of one we already read in the first row.
* We don't need to choose between 3, 4 or 3.5 chunks; because
if we read 7 chunks at a time we end up reading two full
stripes, in the shortest time possible for two stripes.
* The same argument applies to both reads and writes, even if
writes have to write both members of each pair.
* Stripe boundaries don't matter, but chunk boundaries matter
to maximize the transfer per disk, if transfers have
noticeable fixed costs that matters.
Thus in some way it is 3.5 chunks per stripe "on average".
> If you call it 7, then it should work well even though each
> write takes two operations.
The number is right, but per the argument above this applies to
both reads and writes (with the given qualifications), and the
"two operations" probably means "over two stripes".
--
To unsubscribe from this list: send the line "unsubscribe linux-raid" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
[ATA RAID]
[Linux SCSI Target Infrastructure]
[Managing RAID on Linux]
[Linux IDE]
[Linux SCSI]
[Linux Hams]
[Device-Mapper]
[Kernel]
[Linux Books]
[Linux Admin]
[Linux Net]
[GFS]
[RPM]
[git]
[Photos]
[Yosemite Photos]
[Yosemite News]
[AMD 64]
[Linux Networking]