[dm-devel] Re: [k-ueda at ct.jp.nec.com: Re: request-based dm-multipath]

Mike Snitzer snitzer at redhat.com
Wed Apr 15 20:18:29 UTC 2009


On Wed, Apr 15 2009 at  3:09pm -0400,
Mikulas Patocka <mpatocka at redhat.com> wrote:

> On Fri, 10 Apr 2009, Mike Snitzer wrote:
> 
> > Hi Mikulaus,
> > 
> > Figured I'd give you this heads up on the request-based multipath
> > patches too considering your recent "bottom-layer barrier support"
> > patchset (where you said multipath support is coming later).
> > 
> > We likely want to coordinate with the NEC guys so as to make sure things
> > are in order for the request-based patches to get merged along with your
> > remaining barrier work for 2.6.31.
> > 
> > Mike
> > 
> > p.s. below you can see I mistakenly said to Kiyoshi that the recent
> > barrier patches that got merged upstream were "the last of the DM
> > barrier support"...
> 
> Hi
> 
> I would say one thing about the request-based patches --- don't do this.
> 
> Your patch adds an alternate I/O path to request processing on device 
> mapper.
> 
> So, with your patch, there will be two I/O request paths. It means that 
> any work on generic device-mapper code that will have to be done in the 
> future (such as for example barriers that I did) will be twice harder. It 
> will take twice the time to understand request processing, twice brain 
> capacity to remember it, twice the time for coding, twice the time for 
> code review, twice the time for testing.
> 
> If the patch goes in, it will make a lot of things twice harder. And once 
> the patch is in productive kernels, there'd be very little possibility to 
> pull it out.
> 
> What is the exact reason for your patch? I suppose that it's some 
> performance degradation caused by the fact that dm-multipath doesn't 
> distributes requests optimally across both paths. dm-multipath has 
> pluggable path selectors, so you could improve dm-round-robin.c (or write 
> alternate path selector module) and you don't have to touch generic dm 
> code to solve this problem.
> 
> The point is that improving dm-multipath target with better path selector 
> is much less intrusive than patching device mapper core. If you improve 
> dm-multipath target, only people hacking on dm-multipath will have to 
> learn about your code. If you modify generic dm.c file, anyone doing 
> anything on device mapper must learn about your code --- so human time 
> consumed in much worse in this case.
> 
> So, try the alternate solution (write new path selector for dm-multipath) 
> and then you can compare them and see the result --- and then it can be 
> consisdered if the high human time consumed by patching dm.c is worth the 
> performance improvement.

Mikulas,

Section 3.1 of the the following 2007 Linux Symposium paper answers the
"why?" on request-based dm-multipath:
http://ols.108.redhat.com/2007/Reprints/ueda-Reprint.pdf

In summary:
With request-based multipath performance and path error handling is
improved.  

Performance:
The I/O scheduler is leveraged to merge bios into requests; and these
requests are then able to be more evenly balanced across the available
paths (no need to starve other paths like the bio-based multipath is
prone to do).

Error handling:
Finer grained error statistics are available when interfacing more
directly with the hardware like the request-based multipath does.

NEC may already have comparative performance data that will help
illustrate the improvement associated with request-based multipath?
They apparently have dynamic load balancing patches that they developed
for use with the current bio-based multipath.

It'd be interesting to understand the performance difference between
that bio-based implementation and the new request-based implementations
(both service-time and queue-length) of dynamic load balancing.

Mike




More information about the dm-devel mailing list