Bug 427880 - ENHANCEMENT - new multipath scheduler - striped
ENHANCEMENT - new multipath scheduler - striped
Product: Fedora
Classification: Fedora
Component: device-mapper-multipath (Show other bugs)
All Linux
low Severity low
: ---
: ---
Assigned To: LVM and device-mapper development team
Fedora Extras Quality Assurance
Depends On:
  Show dependency treegraph
Reported: 2008-01-07 19:43 EST by Burn Alting
Modified: 2009-01-09 00:44 EST (History)
5 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Last Closed: 2009-01-09 00:44:08 EST
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---

Attachments (Terms of Use)

  None (edit)
Description Burn Alting 2008-01-07 19:43:14 EST
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.


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:
Actual results:

Expected results:

Additional info:
Comment 1 Dave Wysochanski 2008-02-11 01:18:06 EST
Do you have any code for this?  If so, please submit to dm-devel@redhat.com, the
external list for upstream inclusion.

Comment 2 Burn Alting 2008-02-11 01:59:06 EST
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.


Comment 3 Dave Wysochanski 2008-02-12 11:38:44 EST
Do you have something you could test out prototype code and measure any
performance difference?
Comment 4 Burn Alting 2008-02-12 15:51:25 EST
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.
Comment 5 Dave Wysochanski 2008-02-20 12:33:52 EST
Sorry I have not had much time to work on this.  The best next step is probably
posting your design thoughts to dm-devel@redhat.com with a "RFC" subject line. 
You may find interest there who can help move this along.
Comment 6 Bug Zapper 2008-11-26 04:20:27 EST
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: 
Comment 7 Bug Zapper 2009-01-09 00:44:08 EST
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.

Note You need to log in before you can comment on or make changes to this bug.