On Wednesday June 10, martin.petersen@xxxxxxxxxx wrote: > >>>>> "Neil" == NeilBrown <neilb@xxxxxxx> writes: > > >> + 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 :) And I know where my towel is, too :-) > > > 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? For a 'far' or 'offset' layout, you probably want chunksize * raid_disks just like raid0. For a 'near' layout, what you suggest seems good. The driver actually allows both 'near' and 'far'. I doubt if anyone would use it, but it would be nice to get it 'right'. > > 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 think that if you replace "conf->copies" by 'nc' (which is (mddev->layout & 255) ) then that will be perfect. For a 'far' layout, nc is normally '1', and either branch will give the correct value. Thanks, NeilBrown > > 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 > -- > 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 -- 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