linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Dave Chinner <david@fromorbit.com>
To: Sean Noonan <Sean.Noonan@twosigma.com>
Cc: 'Michel Lespinasse' <walken@google.com>,
	Christoph Hellwig <hch@infradead.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Martin Bligh <Martin.Bligh@twosigma.com>,
	Trammell Hudson <Trammell.Hudson@twosigma.com>,
	Christos Zoulas <Christos.Zoulas@twosigma.com>,
	"linux-xfs@oss.sgi.com" <linux-xfs@oss.sgi.com>,
	Stephen Degler <Stephen.Degler@twosigma.com>,
	"linux-mm@kvack.org" <linux-mm@kvack.org>
Subject: Re: XFS memory allocation deadlock in 2.6.38
Date: Tue, 29 Mar 2011 12:51:37 +1100	[thread overview]
Message-ID: <20110329015137.GD3008@dastard> (raw)
In-Reply-To: <081DDE43F61F3D43929A181B477DCA95639B534E@MSXAOA6.twosigma.com>

On Mon, Mar 28, 2011 at 05:34:09PM -0400, Sean Noonan wrote:
> > Could you test if you see the deadlock before
> > 5ecfda041e4b4bd858d25bbf5a16c2a6c06d7272 without MAP_POPULATE ?
> 
> Built and tested 72ddc8f72270758951ccefb7d190f364d20215ab.
> Confirmed that the original bug does not present in this version.
> Confirmed that removing MAP_POPULATE does cause the deadlock to occur.
> 
> Here is the stack of the test:
> # cat /proc/3846/stack
> [<ffffffff812e8a64>] call_rwsem_down_read_failed+0x14/0x30
> [<ffffffff81271c1d>] xfs_ilock+0x9d/0x110
> [<ffffffff81271cae>] xfs_ilock_map_shared+0x1e/0x50
> [<ffffffff81294985>] __xfs_get_blocks+0xc5/0x4e0
> [<ffffffff81294dcc>] xfs_get_blocks+0xc/0x10
> [<ffffffff811322c2>] do_mpage_readpage+0x462/0x660
> [<ffffffff8113250a>] mpage_readpage+0x4a/0x60
> [<ffffffff81295433>] xfs_vm_readpage+0x13/0x20
> [<ffffffff810bb850>] filemap_fault+0x2d0/0x4e0
> [<ffffffff810d8680>] __do_fault+0x50/0x510
> [<ffffffff810da542>] handle_mm_fault+0x1a2/0xe60
> [<ffffffff8102a466>] do_page_fault+0x146/0x440
> [<ffffffff8164e6cf>] page_fault+0x1f/0x30
> [<ffffffffffffffff>] 0xffffffffffffffff

Something else is holding the inode locked here.

> xfssyncd is stuck in D state.
> # cat /proc/2484/stack
> [<ffffffff8106ee1c>] down+0x3c/0x50
> [<ffffffff81297802>] xfs_buf_lock+0x72/0x170
> [<ffffffff8128762d>] xfs_getsb+0x1d/0x50
> [<ffffffff8128e6af>] xfs_trans_getsb+0x5f/0x150
> [<ffffffff8128821e>] xfs_mod_sb+0x4e/0xe0
> [<ffffffff8126e4ea>] xfs_fs_log_dummy+0x5a/0xb0
> [<ffffffff812a2a13>] xfs_sync_worker+0x83/0x90
> [<ffffffff812a28e2>] xfssyncd+0x172/0x220
> [<ffffffff81069576>] kthread+0x96/0xa0
> [<ffffffff81003354>] kernel_thread_helper+0x4/0x10
> [<ffffffffffffffff>] 0xffffffffffffffff

And this is indicating that something else is holding the superblock
locked here. IOWs, whatever thread is having trouble with memory
allocation is causing these threads to block and so they can be
ignored. What's the stack trace of the thread that is throwing the
"I can't allocating a page" errors?

As it is, the question I'd really like answered is how a machine with
48GB RAM can possibly be short of memory when running mmap() on a
16GB file.  The error that XFS is throwing indicates that the
machine cannot allocate a single page of memory, so where has all
your memory gone, and why hasn't the OOM killer been let off the
leash?  What is consuming the other 32GB of RAM or preventing it
from being allocated? 

Also, I was unable to reproduce this at all on a machine with only
2GB of RAM, regardless of the kernel version and/or MAP_POPULATE, so
I'm left to wonder what is special about your test system...

Perhaps the output of xfs_bmap -vvp <file> after a successful vs
deadlocked run would be instructive....

Cheers,

Dave.
-- 
Dave Chinner
david@fromorbit.com

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  parent reply	other threads:[~2011-03-29  1:51 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <081DDE43F61F3D43929A181B477DCA95639B52FD@MSXAOA6.twosigma.com>
     [not found] ` <081DDE43F61F3D43929A181B477DCA95639B5327@MSXAOA6.twosigma.com>
2011-03-24 17:43   ` XFS memory allocation deadlock in 2.6.38 Christoph Hellwig
2011-03-24 23:45     ` Michel Lespinasse
2011-03-28 14:58       ` Sean Noonan
2011-03-28 21:06         ` Michel Lespinasse
2011-03-28 21:34           ` Sean Noonan
2011-03-29  0:25             ` Michel Lespinasse
2011-03-29  1:51             ` Dave Chinner [this message]
2011-03-29  2:49               ` Sean Noonan
2011-03-29 19:05             ` Sean Noonan
2011-03-29 19:24               ` 'Christoph Hellwig'
2011-03-29 19:39                 ` Johannes Weiner
2011-03-29 19:43                   ` 'Christoph Hellwig'
2011-03-29 19:46                 ` Sean Noonan
2011-03-29 20:02                   ` 'Christoph Hellwig'
2011-03-29 20:23                     ` Sean Noonan
2011-03-29 22:42                     ` Dave Chinner
2011-03-29 22:45                       ` Sean Noonan
2011-03-30  9:23                       ` 'Christoph Hellwig'
2011-03-29 19:54                 ` Sean Noonan
2011-03-30  0:09                   ` Dave Chinner
2011-03-30  1:32                     ` Sean Noonan
2011-03-30  1:44                       ` Dave Chinner
2011-03-30  1:52                         ` Sean Noonan
2011-03-30  9:30                     ` 'Christoph Hellwig'

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=20110329015137.GD3008@dastard \
    --to=david@fromorbit.com \
    --cc=Christos.Zoulas@twosigma.com \
    --cc=Martin.Bligh@twosigma.com \
    --cc=Sean.Noonan@twosigma.com \
    --cc=Stephen.Degler@twosigma.com \
    --cc=Trammell.Hudson@twosigma.com \
    --cc=hch@infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux-xfs@oss.sgi.com \
    --cc=walken@google.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;
as well as URLs for NNTP newsgroup(s).