All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mike Snitzer <snitzer@redhat.com>
To: Benjamin Marzinski <bmarzins@redhat.com>
Cc: lsf@lists.linux-foundation.org, axboe@kernel.dk,
	device-mapper development <dm-devel@redhat.com>,
	Jeff Moyer <jmoyer@redhat.com>
Subject: Re: dm-mpath request merging concerns [was: Re: It's time to put together the schedule]
Date: Mon, 23 Feb 2015 17:46:37 -0500	[thread overview]
Message-ID: <20150223224637.GB5503@redhat.com> (raw)
In-Reply-To: <20150223211918.GW11463@ask-08.lab.msp.redhat.com>

On Mon, Feb 23 2015 at  4:19pm -0500,
Benjamin Marzinski <bmarzins@redhat.com> wrote:

> On Mon, Feb 23, 2015 at 02:56:03PM -0500, Mike Snitzer wrote:
> > On Mon, Feb 23 2015 at  1:34pm -0500,
> > Benjamin Marzinski <bmarzins@redhat.com> wrote:
> > 
> > > On Mon, Feb 23, 2015 at 11:18:36AM -0600, Mike Christie wrote:
> > > > 
> > > > If the device/transport is fast or the workload is low, the multipath_busy
> > > > never returns busy, then we can hit Hannes's issue. For 4 paths, we just
> > > > might not be able to fill up the paths and hit the busy check. With only 2
> > > > paths, we might be slow enough or the workload is heavy enough to keep the
> > > > paths busy and so we hit the busy check and do more merging.
> > > 
> > > Netapp is seeing this same issue.  It seems like we might want to make
> > > multipath_busy more aggressive about returning busy, which would
> > > probably require multipath tracking the size and frequency of the
> > > requests.  If it determines that it's getting a lot of requests that
> > > could have been merged, it could start throttling how fast requests are
> > > getting pulled off the queue, even there underlying paths aren't busy.
> > 
> > the ->busy() checks are just an extra check the shouldn't be the primary
> > method for governing the effectiveness of the DM-mpath queue's elevator.
> > 
> > I need to get back to basics to appreciate how the existing block layer
> > is able to have an effective elevator regardless of the device's speed.
> > And why isn't request-based DM able to just take advantage of it?
> 
> I always thought that at least one of the schedulers always kept
> incoming requests on an interal queue for at least a little bit to see
> if any merging could happen, even if they could otherwise just be added
> to the request queue. but I admit to being a little vague on how exactly
> they all work.

CFQ has idling, etc.  Which promotes merging.

> Another place where we could break out of constantly pulling requests of
> the queue before they're merged is in dm_prep_fn().  If we thought that
> we should break and let merging happen, we could return BLKPREP_DEFER.

It is blk_queue_bio(), via q->make_request_fn, that is intended to
actually do the merging.  What I'm hearing is that we're only getting
some small amount of merging if:
1) the 2 path case is used and therefore ->busy hook within
   q->request_fn is not taking the request off the queue, so there is
   more potential for later merging
2) the 4 path case IFF nr_requests is reduced to induce ->busy, which
   only promoted merging as a side-effect like 1) above

The reality is we aren't getting merging where it _should_ be happening
(in blk_queue_bio).  We need to understand why that is.

  reply	other threads:[~2015-02-23 22:46 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1424395745.2603.27.camel@HansenPartnership.com>
     [not found] ` <54EAD453.6040907@suse.de>
2015-02-23 13:50   ` dm-mpath request merging concerns [was: Re: It's time to put together the schedule] Mike Snitzer
2015-02-23 17:18     ` [Lsf] " Mike Christie
2015-02-23 18:34       ` Benjamin Marzinski
2015-02-23 19:56         ` Mike Snitzer
2015-02-23 21:19           ` Benjamin Marzinski
2015-02-23 22:46             ` Mike Snitzer [this message]
2015-02-23 22:14               ` Benjamin Marzinski
2015-02-24  0:39                 ` Mike Snitzer
2015-02-24  0:38                   ` Benjamin Marzinski
2015-02-24  2:02                     ` Mike Snitzer
2015-02-24 14:35                       ` Jeff Moyer
2015-02-24 14:59                         ` Mike Snitzer
2015-02-23 19:35       ` [Lsf] " Merla, ShivaKrishna
2015-02-23 19:50       ` Mike Snitzer
2015-02-23 20:08         ` [Lsf] " Christoph Hellwig
2015-02-23 20:39           ` Mike Snitzer
2015-02-23 21:14             ` Mike Snitzer
     [not found] ` <20150223170842.GK24272@dhcp22.suse.cz>
     [not found]   ` <20150302151941.GB26343@dhcp22.suse.cz>
     [not found]     ` <1425309993.2187.3.camel@HansenPartnership.com>
     [not found]       ` <20150302152858.GF26334@dhcp22.suse.cz>
     [not found]         ` <20150302104154.3ae46eb7@tlielax.poochiereds.net>
     [not found]           ` <1425311094.2187.11.camel@HansenPartnership.com>
2015-03-08 18:11             ` RFC for small allocation failure mode transition plan (was: Re: [Lsf] common session about page allocator vs. FS/IO) It's time to put together the schedule) Michal Hocko

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20150223224637.GB5503@redhat.com \
    --to=snitzer@redhat.com \
    --cc=axboe@kernel.dk \
    --cc=bmarzins@redhat.com \
    --cc=dm-devel@redhat.com \
    --cc=jmoyer@redhat.com \
    --cc=lsf@lists.linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.