Re: Why does raid0 set max_hw_sectors as chunk size but the other raid types doesn't?
From: Joey Liao <hidden>
Date: 2016-06-02 09:30:25
Hi NeilBrown, Thanks for your kindly reply. Originally, I doubt that would it affect the performance or not, but I agree with your point. Thanks. 2016-06-02 12:38 GMT+08:00 NeilBrown [off-list ref]:
On Mon, May 30 2016, Joey Liao wrote:quoted
Hi, I have no idea why does raid0_run() in raid0.c use blk_queue_max_hw_sectors() to set max_hw_sectors as the chunk size, but the other raid types doesn't?git is your friend.... admittedly you need the 'history' git tree to go back before 2.6.12, but it is available. http://git.kernel.org/cgit/linux/kernel/git/history/history.git/commit/?id=f556ef000efc90a45a285f4f0b4fd70bb70fquoted
What's the purpose to limit the max_hw_sectors in raid0?unfortunately the commit doesn't answer that question. I think it was to ensure requests larger than one chunk were not created. If they were they would just have to be split, so there is no much to gain.quoted
Is it related to the source code logic issue or the performance issue? Besides, I have an interesting observation. If I remove all the following queue limitation codes in raid0_run() of raid0.c, the block size in iostat is still the same as chunk size even the input block size is much larger than the chunk size. Why???Because when you write to a RAID0 you *must* divide each request up into chunk-sizes sub-requests, and send them to different devices. NeilBrownquoted
- blk_queue_max_hw_sectors(mddev->queue, mddev->chunk_sectors); - blk_queue_max_write_same_sectors(mddev->queue, mddev->chunk_sectors); + //blk_queue_max_hw_sectors(mddev->queue, mddev->chunk_sectors); + //blk_queue_max_write_same_sectors(mddev->queue, mddev->chunk_sectors); - blk_queue_io_min(mddev->queue, mddev->chunk_sectors << 9); - blk_queue_io_opt(mddev->queue, - (mddev->chunk_sectors << 9) * mddev->raid_disks); + //blk_queue_io_min(mddev->queue, mddev->chunk_sectors << 9); + /*blk_queue_io_opt(mddev->queue, + (mddev->chunk_sectors << 9) * mddev->raid_disks);*/ -- To unsubscribe from this list: send the line "unsubscribe linux-raid" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html