public inbox for linux-xfs@vger.kernel.org
 help / color / mirror / Atom feed
From: David Chinner <dgc@sgi.com>
To: Andi Kleen <andi@firstfloor.org>
Cc: Stewart Smith <stewart@mysql.com>, David Chinner <dgc@sgi.com>,
	xfs-oss <xfs@oss.sgi.com>, lkml <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 2/9]: Reduce Log I/O latency
Date: Fri, 23 Nov 2007 00:15:39 +1100	[thread overview]
Message-ID: <20071122131539.GX114266761@sgi.com> (raw)
In-Reply-To: <20071122120611.GA3573@one.firstfloor.org>

On Thu, Nov 22, 2007 at 01:06:11PM +0100, Andi Kleen wrote:
> > FWIW from a "real time" database POV this seems to make sense to me...
> > in fact, we probably rely on filesystem metadata way too much
> > (historically it's just "worked".... although we do seem to get issues
> > on ext3).
> 
> For that case you really would need priority inheritance: any metadata
> IO on behalf or blocking a process needs to use the process' block IO 
> priority.

How do you do that when the processes are blocking on semaphores,
mutexes or rw-semaphores in the fileysystem three layers removed from
the I/O in progress?

e.g. a low priority process transaction is holding the AGF buffer
locked but the transaction is blocked waiting for some other
metadata I/O it has issued needed in the transaction.  That metadata
I/O is being held out by a higher priority process doing lots of
I/O.

Another process at the same priority creates a file, requiring
inodes to be allocated so it locks the directory into the
transaction and later blocks on the AGF buffer semaphore trying to
allocate space for the new inode.

A very high priority process now comes along and tries to read the
directory locked in the create transaction, and blocks on the
directory inode ilock because it's already held in write mode.

That's three processes all blocked on locks unrelated to the I/O
that is being held out, and there is no direct connection that can
be used to pass the priority down to the blocked I/O that is causing
all the problems.....

It's a Bad Idea.

Cheers,

Dave.
-- 
Dave Chinner
Principal Engineer
SGI Australian Software Group

  reply	other threads:[~2007-11-22 13:15 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20071122003339.GH114266761__34694.2978365861$1195691722$gmane$org@sgi.com>
2007-11-22  0:49 ` [PATCH 2/9]: Reduce Log I/O latency Andi Kleen
2007-11-22  1:12   ` David Chinner
2007-11-22  2:57     ` Matt Mackall
2007-11-22  3:41       ` David Chinner
2007-11-22  7:25         ` Matt Mackall
2007-11-22 10:31           ` David Chinner
2007-11-22 18:10             ` Matt Mackall
2007-11-22 22:29               ` David Chinner
2007-11-22 23:09                 ` David Chinner
2007-11-23  0:21                   ` Matt Mackall
2007-11-23  0:20                 ` Matt Mackall
2007-11-22  3:28     ` Stewart Smith
2007-11-22 12:06       ` Andi Kleen
2007-11-22 13:15         ` David Chinner [this message]
2007-11-23  2:53           ` Andi Kleen
2007-11-23  4:03             ` David Chinner
2007-11-23 12:01               ` Andi Kleen
2007-11-24 18:43                 ` Matt Mackall
2007-11-22  0:33 David Chinner
2007-11-26  2:11 ` Lachlan McIlroy

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=20071122131539.GX114266761@sgi.com \
    --to=dgc@sgi.com \
    --cc=andi@firstfloor.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stewart@mysql.com \
    --cc=xfs@oss.sgi.com \
    /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