linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Dave Chinner <david@fromorbit.com>
To: Chris Mason <chris.mason@oracle.com>, Ted Ts'o <tytso@mit.edu>,
	Jeff Moyer <jmoyer@redhat.com>,
	Boaz Harrosh <bharrosh@panasas.com>, Zach Brown <zab@zabbo.net>,
	Eric Sandeen <sandeen@redhat.com>,
	linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org
Subject: Re: [PATCH, RFC] Don't do page stablization if !CONFIG_BLKDEV_INTEGRITY
Date: Fri, 9 Mar 2012 19:11:13 +1100	[thread overview]
Message-ID: <20120309081113.GU5091@dastard> (raw)
In-Reply-To: <20120308212054.GI29510@shiny>

On Thu, Mar 08, 2012 at 04:20:54PM -0500, Chris Mason wrote:
> On Thu, Mar 08, 2012 at 04:12:21PM -0500, Ted Ts'o wrote:
> > On Thu, Mar 08, 2012 at 03:42:52PM -0500, Jeff Moyer wrote:
> > > 
> > > So now we're back to figuring out how to tell how long I/O will take?
> > > If writeback is issuing random access I/Os to spinning media, you can
> > > bet it might be a while.  Today, you could lower nr_requests to some
> > > obscenely small number to improve worst-case latency.  I thought there
> > > was some talk about improving the intelligence of writeback in this
> > > regard, but it's a tough problem, especially given that writeback isn't
> > > the only cook in the kitchen.
> > 
> > ... and it gets worse if there is any kind of I/O prioritization going
> > on via ionice(), or (as was the case in our example) I/O cgroups were
> > being used to provide proportional I/O rate controls.  I don't think
> > it's realistic to assume the writeback code can predict how long I/O
> > will take when it does a submission.
> 
> cgroups do make it much harder because it could be a simple IO priority
> inversion.  The latencies are just going to be a fact of life for now
> and the best choice is to skip the stable pages.

They have always been a fact of life - just ask anyone that has to
deal with deterministic or "real-time" IO applications.

Unpredictable IO path latencies are not a new problem, and it
doesn't take stable pages to cause sigificant holdoffs in the
writing to a file.  For example: writeback triggers triggers delayed
allocation, which locks the extent map and then blocks behind an
allocation already in progress or has to do IO to read in freespace
metadata. The next write comes along from another thread/process and
it has to map a new page and that now blocks on the extent map lock
and won't progress until the delayed allocation in progress
completes....

IO latencies are pretty much unavoidable, so the best thing to do is
to write applications that care about latency to minimise it's
impact as much as possible. Simple techniques like double buffering
and async IO dispatch techniques to decouple the IO stream from the
process/threads that are doing real work are the usual ways of
dealing with this problem.

Cheers,

Dave.
-- 
Dave Chinner
david@fromorbit.com

  reply	other threads:[~2012-03-09  8:11 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-03-07 23:40 [PATCH, RFC] Don't do page stablization if !CONFIG_BLKDEV_INTEGRITY Theodore Ts'o
2012-03-07 23:54 ` Eric Sandeen
2012-03-08  0:05   ` Darrick J. Wong
2012-03-08  2:18     ` Darrick J. Wong
2012-03-08  3:00       ` Boaz Harrosh
2012-03-08  3:21         ` Boaz Harrosh
2012-03-08  2:39   ` Zach Brown
2012-03-08 15:54     ` Ted Ts'o
2012-03-08 18:09       ` Chris Mason
2012-03-08 20:20         ` Boaz Harrosh
2012-03-08 20:37           ` Chris Mason
2012-03-08 20:42             ` Jeff Moyer
2012-03-08 20:55               ` Chris Mason
2012-03-08 21:12               ` Ted Ts'o
2012-03-08 21:20                 ` Chris Mason
2012-03-09  8:11                   ` Dave Chinner [this message]
2012-03-08 20:50             ` Boaz Harrosh
2012-03-08 23:32               ` Dave Chinner
2012-03-08 21:24           ` Ted Ts'o
2012-03-08 21:38             ` Chris Mason
2012-03-08 21:41               ` Ted Ts'o
2012-03-09  1:02                 ` Chris Mason
2012-03-09  1:08                   ` Martin K. Petersen
2012-03-09 16:20                   ` Ted Ts'o
2012-03-08 21:52             ` Boaz Harrosh
2012-03-08  0:23 ` Boaz Harrosh
2012-03-08  3:45   ` Martin K. Petersen
2012-03-08  4:37     ` Boaz Harrosh
2012-03-08  6:27       ` Sage Weil
2012-03-08 15:43         ` Ted Ts'o
2012-03-08 16:36           ` Martin K. Petersen
2012-03-08 16:43           ` Sage Weil
2012-03-15  2:10             ` Andy Lutomirski
2012-03-15  4:46               ` Boaz Harrosh
2012-03-15  5:02                 ` Andy Lutomirski

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=20120309081113.GU5091@dastard \
    --to=david@fromorbit.com \
    --cc=bharrosh@panasas.com \
    --cc=chris.mason@oracle.com \
    --cc=jmoyer@redhat.com \
    --cc=linux-ext4@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=sandeen@redhat.com \
    --cc=tytso@mit.edu \
    --cc=zab@zabbo.net \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).