Thread (1 message) 1 message, 1 author, 2009-06-10

Re: [PATCH] md: Use new topology calls to indicate alignment and I/O sizes

From: "Martin K. Petersen" <martin.petersen@oracle.com>
Date: 2009-06-10 06:47:34

quoted
quoted
quoted
quoted
"Neil" == NeilBrown  [off-list ref] writes:
quoted
+ blk_queue_io_opt(mddev->queue, chunk_size * (mddev->raid_disks >>
 	blk_queue_io_opt(mddev->1));
Neil>  ">> 1" is wrong.  A raid10 may have more than 2 copies for each
Neil>  block.

I recall pondering when I wrote that.  Never got around to revisiting
the issue.  Your RAID10 implementation is a bit hipper than most :)


Neil>  This calculation needs to be a bit more subtle and take about of
Neil>  the particular layout (near, offset, or far).

Why would layout interfere with preferred I/O size?

How about:

    if (conf->raid_disks % conf->copies)
	blk_queue_io_opt(mddev->queue, chunk_size * conf->raid_disks);
    else
	blk_queue_io_opt(mddev->queue, chunk_size *
			 (conf->raid_disks / conf->copies));

I.e.:

2 drives, 2 copies: a1 a1       optimal I/O = 1 * chunk_size

3 drives, 2 copies: a1 a1 a2
                    a2 a3 a3    optimal I/O = 3 * chunk_size

4 drives, 2 copies: a1 a1 a2 a2	optimal I/O = 2 * chunk_size

4 drives, 3 copies: a1 a1 a1 a2
                    a2 a2 a3 a3
                    a3 a4 a4 a4 optimal I/O = 4 * chunk_size

And so on.  Does that make sense?  I.e. we try to keep all drives
equally busy.


Neil> You seem to be treating raid4 like raid6 :-)

Whoops.  I always forget about raid4.  Fixed.

-- 
Martin K. Petersen	Oracle Linux Engineering
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help