Description of problem: I'd like to propose a new multipath scheduler - striped. The idea is that, given a stripe size, S, we stripe the io in S block segments across the available multiple paths. If a path fails then a pre-determined division of the stripe size reallocates which path gets the missing paths data. Taking the case of two paths and a stripe size of S blocks, stripe number 0, blocks 0 thru S - 1 goes via the first path stripe number 1, blocks S thru 2*S - 1 goes via the second path stripe number 2, blocks 2*S thru 3*S - 1 goes via the first path and so forth. If a path fails, then the surviving path gets all io. Taking the general case of N paths and a stripe size of S blocks. stripe number 0, blocks 0 thru S - 1 goes via the first path stripe number 1, blocks S thru 2*S - 1 goes via the second path stripe number 2, blocks 2*S thru 3*S - 1 goes via the third path stripe number 3, blocks 3*S thru 4*S - 1 goes via the third path stripe number N-1, blocks (N-1)*S thru N*S - 1 goes via the (N-1)th path and so on If a path fails, then we could say flush/drain all io's, redirect the io's for the failed path to an adjacent path and then recompute the stripe from N to N - 1 - ie keep the io balanced. WHY? For active-active multi-controller raid environments. I believe, if we select an appropriate stripe size, then there would be mininmal interlock/cache/whatever clashes on the raid controllers and so we lessening the chance of delay due to the raid controllers interlocking. Version-Release number of selected component (if applicable): How reproducible: Steps to Reproduce: 1. 2. 3. Actual results: Expected results: Additional info:
Do you have any code for this? If so, please submit to dm-devel, the external list for upstream inclusion. Thanks.
Sorry Dave I don't. I looked at this some time ago and put it into the too hard basket. I seem to remember the difficulty was that by the time the code decides what path to take, it has already committed to a block number for the io. The idea here is to, based on the io, either submit it to a specific path or break the io into 2 (or more if needed) and submit each 'sub-io' to the appropriate pathes. Sorry Burn
Do you have something you could test out prototype code and measure any performance difference?
Yes. I have full access (programming that is) to dual controller raid systems where I can configure raidsets to be accessed by both raid controllers (active-active) - I only have a dual port FC HBA so I could only test two paths at once at the moment.
Sorry I have not had much time to work on this. The best next step is probably posting your design thoughts to dm-devel with a "RFC" subject line. You may find interest there who can help move this along.
This message is a reminder that Fedora 8 is nearing its end of life. Approximately 30 (thirty) days from now Fedora will stop maintaining and issuing updates for Fedora 8. It is Fedora's policy to close all bug reports from releases that are no longer maintained. At that time this bug will be closed as WONTFIX if it remains open with a Fedora 'version' of '8'. Package Maintainer: If you wish for this bug to remain open because you plan to fix it in a currently maintained version, simply change the 'version' to a later Fedora version prior to Fedora 8's end of life. Bug Reporter: Thank you for reporting this issue and we are sorry that we may not be able to fix it before Fedora 8 is end of life. If you would still like to see this bug fixed and are able to reproduce it against a later version of Fedora please change the 'version' of this bug to the applicable version. If you are unable to change the version, please add a comment here and someone will do it for you. Although we aim to fix as many bugs as possible during every release's lifetime, sometimes those efforts are overtaken by events. Often a more recent Fedora release includes newer upstream software that fixes bugs or makes them obsolete. The process we are following is described here: http://fedoraproject.org/wiki/BugZappers/HouseKeeping
Fedora 8 changed to end-of-life (EOL) status on 2009-01-07. Fedora 8 is no longer maintained, which means that it will not receive any further security or bug fix updates. As a result we are closing this bug. If you can reproduce this bug against a currently maintained version of Fedora please feel free to reopen this bug against that version. Thank you for reporting this bug and we are sorry it could not be fixed.