* [PATCH] md: Enhancements and clean to linear RAID @ 2009-05-19 6:23 SandeepKsinha 2009-05-19 7:25 ` NeilBrown 0 siblings, 1 reply; 9+ messages in thread From: SandeepKsinha @ 2009-05-19 6:23 UTC (permalink / raw) To: Neil Brown; +Cc: Linux RAID Hi Neil, I have made the desired changes and have tested the changes as well. As expected the performance gain with number of devices ( > 20 ) is quite visible. The code also looks simpler as compared to what it earlier was. I have created the following patches for the changes: PATCH [01/03] md: Removal of num_sectors from dev_info in linear raid This patch removes the num_sectors from dev_info and makes use of the rdev->sectors for all further usage. PATCH[02/03] md: Getting rid of sector_div and hash table in linear raid Removal of all the code pertaining hast table and other related data structures. This also makes the code really really simple. The searching being made linear for the time being to test the patch. PATCH[03/03] md: Replacing linear with a binary search This patch replaces the linear search in which_dev with binary search. The patches will follow this mail. -- Regards, Sandeep. “To learn is to change. Education is a process that changes the learner.” -- 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 ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] md: Enhancements and clean to linear RAID 2009-05-19 6:23 [PATCH] md: Enhancements and clean to linear RAID SandeepKsinha @ 2009-05-19 7:25 ` NeilBrown 2009-05-19 7:31 ` SandeepKsinha 0 siblings, 1 reply; 9+ messages in thread From: NeilBrown @ 2009-05-19 7:25 UTC (permalink / raw) To: SandeepKsinha; +Cc: Linux RAID On Tue, May 19, 2009 4:23 pm, SandeepKsinha wrote: > Hi Neil, > > I have made the desired changes and have tested the changes as well. > As expected the performance gain with number of devices ( > 20 ) is > quite visible. How did you measure the performance gain and what were your results? > The code also looks simpler as compared to what it earlier was. > > I have created the following patches for the changes: > > PATCH [01/03] md: Removal of num_sectors from dev_info in linear raid > > This patch removes the num_sectors from dev_info and makes use of the > rdev->sectors for > all further usage. Could I as you to redo this one a little differently? I want to keep the linear search very tight, and you have just added a pointer de-reference to it. If you could replace start_sector by end_sector, we wouldn't need that de-reference or the addition. > > PATCH[02/03] md: Getting rid of sector_div and hash table in linear raid > > Removal of all the code pertaining hast table and other related data > structures. > This also makes the code really really simple. > The searching being made linear for the time being to test the patch. > > PATCH[03/03] md: Replacing linear with a binary search > > This patch replaces the linear search in which_dev with binary search. Two things wrong with you binary search. 1/ the while() condition is "hi >= lo". That will always be true, so it would be better to make that explicit. i.e. "while(1)". However the while loop of a binary search should be while (hi > lo) 2/ You have 3 comparisons against 'sector' inside the loop. There should only be one. We are aiming for speed remember :-) while (hi > lo) { mid = (hi + lo + 1) / 2; dev = conf->disks + mid; if (sector >= dev->start_sector) lo = mid; else hi = mid - 1; } return dev; With that formulation, you don't even need to replace sector_start by sector_end.. However doing so would make other code simpler, so please do proceed with replacing sector_start by sector_end. Then the binary search (with a fix because dev can be uninitialised), becomes: while (hi > lo) { mid = (hi + lo) / 2; if (sector < conf->disks[mid].end_sector) hi = mid; else lo = mid + 1; } return conf->disks + lo; NeilBrown ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] md: Enhancements and clean to linear RAID 2009-05-19 7:25 ` NeilBrown @ 2009-05-19 7:31 ` SandeepKsinha 2009-05-19 10:46 ` SandeepKsinha 0 siblings, 1 reply; 9+ messages in thread From: SandeepKsinha @ 2009-05-19 7:31 UTC (permalink / raw) To: NeilBrown; +Cc: Linux RAID Thanks Neil, On Tue, May 19, 2009 at 12:55 PM, NeilBrown <neilb@suse.de> wrote: > On Tue, May 19, 2009 4:23 pm, SandeepKsinha wrote: >> Hi Neil, >> >> I have made the desired changes and have tested the changes as well. >> As expected the performance gain with number of devices ( > 20 ) is >> quite visible. > > How did you measure the performance gain and what were your > results? > I created arrays with 20 devices and performed random I/O it. The results with linear search were slower as compared to binary. >> The code also looks simpler as compared to what it earlier was. >> >> I have created the following patches for the changes: >> >> PATCH [01/03] md: Removal of num_sectors from dev_info in linear raid >> >> This patch removes the num_sectors from dev_info and makes use of the >> rdev->sectors for >> all further usage. > > Could I as you to redo this one a little differently? > I want to keep the linear search very tight, and you have just added > a pointer de-reference to it. > > If you could replace start_sector by end_sector, we wouldn't need that > de-reference or the addition. > > I would make the required changes. >> >> PATCH[02/03] md: Getting rid of sector_div and hash table in linear raid >> >> Removal of all the code pertaining hast table and other related data >> structures. >> This also makes the code really really simple. >> The searching being made linear for the time being to test the patch. >> >> PATCH[03/03] md: Replacing linear with a binary search >> >> This patch replaces the linear search in which_dev with binary search. > > Two things wrong with you binary search. > 1/ the while() condition is "hi >= lo". That will always be true, so it > would be better to make that explicit. i.e. "while(1)". > However the while loop of a binary search should be > while (hi > lo) > > 2/ You have 3 comparisons against 'sector' inside the loop. There should > only be one. We are aiming for speed remember :-) > > while (hi > lo) { > mid = (hi + lo + 1) / 2; > dev = conf->disks + mid; > > if (sector >= dev->start_sector) > lo = mid; > else > hi = mid - 1; > } > return dev; > > With that formulation, you don't even need to replace > sector_start by sector_end.. However doing so would make other > code simpler, so please do proceed with replacing sector_start by > sector_end. > Then the binary search (with a fix because dev can be uninitialised), > becomes: > > while (hi > lo) { > mid = (hi + lo) / 2; > > if (sector < conf->disks[mid].end_sector) > hi = mid; > else > lo = mid + 1; > } > return conf->disks + lo; > I will make this change too. Thanks. > NeilBrown > > > > -- Regards, Sandeep. “To learn is to change. Education is a process that changes the learner.” -- 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 ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] md: Enhancements and clean to linear RAID 2009-05-19 7:31 ` SandeepKsinha @ 2009-05-19 10:46 ` SandeepKsinha 2009-05-19 11:38 ` Neil Brown 0 siblings, 1 reply; 9+ messages in thread From: SandeepKsinha @ 2009-05-19 10:46 UTC (permalink / raw) To: NeilBrown; +Cc: Linux RAID Hi Neil, I have made all the required changes and have tested the changes. It works fine. Thanks for enlightening me, the changes really optimized the code further. The patches will be followed by this mail. On Tue, May 19, 2009 at 1:01 PM, SandeepKsinha <sandeepksinha@gmail.com> wrote: > Thanks Neil, > > > On Tue, May 19, 2009 at 12:55 PM, NeilBrown <neilb@suse.de> wrote: >> On Tue, May 19, 2009 4:23 pm, SandeepKsinha wrote: >>> Hi Neil, >>> >>> I have made the desired changes and have tested the changes as well. >>> As expected the performance gain with number of devices ( > 20 ) is >>> quite visible. >> >> How did you measure the performance gain and what were your >> results? >> > > I created arrays with 20 devices and performed random I/O it. > The results with linear search were slower as compared to binary. > >>> The code also looks simpler as compared to what it earlier was. >>> >>> I have created the following patches for the changes: >>> >>> PATCH [01/03] md: Removal of num_sectors from dev_info in linear raid >>> >>> This patch removes the num_sectors from dev_info and makes use of the >>> rdev->sectors for >>> all further usage. >> >> Could I as you to redo this one a little differently? >> I want to keep the linear search very tight, and you have just added >> a pointer de-reference to it. >> >> If you could replace start_sector by end_sector, we wouldn't need that >> de-reference or the addition. >> >> > I would make the required changes. > >>> >>> PATCH[02/03] md: Getting rid of sector_div and hash table in linear raid >>> >>> Removal of all the code pertaining hast table and other related data >>> structures. >>> This also makes the code really really simple. >>> The searching being made linear for the time being to test the patch. >>> >>> PATCH[03/03] md: Replacing linear with a binary search >>> >>> This patch replaces the linear search in which_dev with binary search. >> >> Two things wrong with you binary search. >> 1/ the while() condition is "hi >= lo". That will always be true, so it >> would be better to make that explicit. i.e. "while(1)". >> However the while loop of a binary search should be >> while (hi > lo) >> >> 2/ You have 3 comparisons against 'sector' inside the loop. There should >> only be one. We are aiming for speed remember :-) >> >> while (hi > lo) { >> mid = (hi + lo + 1) / 2; >> dev = conf->disks + mid; >> >> if (sector >= dev->start_sector) >> lo = mid; >> else >> hi = mid - 1; >> } >> return dev; >> >> With that formulation, you don't even need to replace >> sector_start by sector_end.. However doing so would make other >> code simpler, so please do proceed with replacing sector_start by >> sector_end. >> Then the binary search (with a fix because dev can be uninitialised), >> becomes: >> >> while (hi > lo) { >> mid = (hi + lo) / 2; >> >> if (sector < conf->disks[mid].end_sector) >> hi = mid; >> else >> lo = mid + 1; >> } >> return conf->disks + lo; >> > > I will make this change too. > > > Thanks. > >> NeilBrown >> >> >> >> > > > > -- > Regards, > Sandeep. > > > > > > > “To learn is to change. Education is a process that changes the learner.” > -- Regards, Sandeep. “To learn is to change. Education is a process that changes the learner.” -- 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 ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] md: Enhancements and clean to linear RAID 2009-05-19 10:46 ` SandeepKsinha @ 2009-05-19 11:38 ` Neil Brown 2009-05-19 11:56 ` SandeepKsinha 2009-05-21 3:15 ` SandeepKsinha 0 siblings, 2 replies; 9+ messages in thread From: Neil Brown @ 2009-05-19 11:38 UTC (permalink / raw) To: SandeepKsinha; +Cc: Linux RAID On Tuesday May 19, sandeepksinha@gmail.com wrote: > Hi Neil, > > I have made all the required changes and have tested the changes. > It works fine. > > Thanks for enlightening me, the changes really optimized the code further. > > The patches will be followed by this mail. Thanks. I have applied them all (with very minor cleanups) and pushed them to my for-next tree. They can be viewed here: http://neil.brown.name/git?p=md;a=shortlog;h=refs/heads/for-next I have taken the liberty of rewriting the introductory comments on the patches a little. I hope you don't mind. One important part of the patches that was missing was a "signed-off-by" line. Please read section 12 of Documentation/SubmittingPatches and then if you agree that the you an certify the Developer's Certificate of Origin on these patches, please write explicitly that I should add your Signed-off-by line to these patches. I have no doubt that the patches are suitably original, but the process requires that you explicitly tell me so. Thanks, NeilBrown ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] md: Enhancements and clean to linear RAID 2009-05-19 11:38 ` Neil Brown @ 2009-05-19 11:56 ` SandeepKsinha 2009-05-19 12:32 ` Sujit Karataparambil 2009-05-21 3:15 ` SandeepKsinha 1 sibling, 1 reply; 9+ messages in thread From: SandeepKsinha @ 2009-05-19 11:56 UTC (permalink / raw) To: Neil Brown; +Cc: Linux RAID Hi Neil, On Tue, May 19, 2009 at 5:08 PM, Neil Brown <neilb@suse.de> wrote: > On Tuesday May 19, sandeepksinha@gmail.com wrote: >> Hi Neil, >> >> I have made all the required changes and have tested the changes. >> It works fine. >> >> Thanks for enlightening me, the changes really optimized the code further. >> >> The patches will be followed by this mail. > > Thanks. > I have applied them all (with very minor cleanups) and pushed them to > my for-next tree. > They can be viewed here: > http://neil.brown.name/git?p=md;a=shortlog;h=refs/heads/for-next > > I have taken the liberty of rewriting the introductory comments on the > patches a little. I hope you don't mind. > Sure. You always have the liberty to do so. > One important part of the patches that was missing was a > "signed-off-by" line. > Please read section 12 of Documentation/SubmittingPatches > and then if you agree that the you an certify the Developer's > Certificate of Origin on these patches, please write explicitly that I > should add your Signed-off-by line to these patches. > Yes, So, I kindly request you to add "Signed-off-by: Sandeep K Sinha <sandeepksinha@gmail.com>" against each of the patches. Thanks a lot. > I have no doubt that the patches are suitably original, but the > process requires that you explicitly tell me so. > > Thanks, > NeilBrown > -- Regards, Sandeep. “To learn is to change. Education is a process that changes the learner.” -- 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 ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] md: Enhancements and clean to linear RAID 2009-05-19 11:56 ` SandeepKsinha @ 2009-05-19 12:32 ` Sujit Karataparambil 0 siblings, 0 replies; 9+ messages in thread From: Sujit Karataparambil @ 2009-05-19 12:32 UTC (permalink / raw) To: Neil Brown, Linux RAID; +Cc: SandeepKsinha Neil, Is there any git tree where the test cases can be added. These seem to be huge changes with regard to the dev interface. Hopefully the test cases can be added in specific cases. Thanks, Sujit On Tue, May 19, 2009 at 5:26 PM, SandeepKsinha <sandeepksinha@gmail.com> wrote: > Hi Neil, > > On Tue, May 19, 2009 at 5:08 PM, Neil Brown <neilb@suse.de> wrote: >> On Tuesday May 19, sandeepksinha@gmail.com wrote: >>> Hi Neil, >>> >>> I have made all the required changes and have tested the changes. >>> It works fine. >>> >>> Thanks for enlightening me, the changes really optimized the code further. >>> >>> The patches will be followed by this mail. >> >> Thanks. >> I have applied them all (with very minor cleanups) and pushed them to >> my for-next tree. >> They can be viewed here: >> http://neil.brown.name/git?p=md;a=shortlog;h=refs/heads/for-next >> >> I have taken the liberty of rewriting the introductory comments on the >> patches a little. I hope you don't mind. >> > > Sure. You always have the liberty to do so. > >> One important part of the patches that was missing was a >> "signed-off-by" line. >> Please read section 12 of Documentation/SubmittingPatches >> and then if you agree that the you an certify the Developer's >> Certificate of Origin on these patches, please write explicitly that I >> should add your Signed-off-by line to these patches. >> > > Yes, So, I kindly request you to add > "Signed-off-by: Sandeep K Sinha <sandeepksinha@gmail.com>" > against each of the patches. > > Thanks a lot. > >> I have no doubt that the patches are suitably original, but the >> process requires that you explicitly tell me so. >> >> Thanks, >> NeilBrown >> > > > > -- > Regards, > Sandeep. > > > > > > > “To learn is to change. Education is a process that changes the learner.” > -- > 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 > -- -- Sujit K M -- 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 ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] md: Enhancements and clean to linear RAID 2009-05-19 11:38 ` Neil Brown 2009-05-19 11:56 ` SandeepKsinha @ 2009-05-21 3:15 ` SandeepKsinha 2009-05-21 3:47 ` NeilBrown 1 sibling, 1 reply; 9+ messages in thread From: SandeepKsinha @ 2009-05-21 3:15 UTC (permalink / raw) To: Neil Brown; +Cc: Linux RAID Hi Neil, > I have applied them all (with very minor cleanups) and pushed them to > my for-next tree. Can you help me pull out this git tree? How can I do this ? -- Regards, Sandeep. “To learn is to change. Education is a process that changes the learner.” -- 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 ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] md: Enhancements and clean to linear RAID 2009-05-21 3:15 ` SandeepKsinha @ 2009-05-21 3:47 ` NeilBrown 0 siblings, 0 replies; 9+ messages in thread From: NeilBrown @ 2009-05-21 3:47 UTC (permalink / raw) To: SandeepKsinha; +Cc: Linux RAID On Thu, May 21, 2009 1:15 pm, SandeepKsinha wrote: > Hi Neil, > >> I have applied them all (with very minor cleanups) and pushed them to >> my for-next tree. > > > Can you help me pull out this git tree? > How can I do this ? Clone a recent linux kernel tree from somewhere, e.g. git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 then fetch my tree into that cd linux-2.6 git fetch git://neil.brown.name/md then look at the branches git branch -a and choose one to checkout But don't try to clone directly from neil.brown.name. My link isn't fast enough for that. NeilBrown ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2009-05-21 3:47 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2009-05-19 6:23 [PATCH] md: Enhancements and clean to linear RAID SandeepKsinha 2009-05-19 7:25 ` NeilBrown 2009-05-19 7:31 ` SandeepKsinha 2009-05-19 10:46 ` SandeepKsinha 2009-05-19 11:38 ` Neil Brown 2009-05-19 11:56 ` SandeepKsinha 2009-05-19 12:32 ` Sujit Karataparambil 2009-05-21 3:15 ` SandeepKsinha 2009-05-21 3:47 ` NeilBrown
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox