linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Andrea Arcangeli <aarcange@redhat.com>
To: Mel Gorman <mgorman@suse.de>
Cc: Mel Gorman <mel@csn.ul.ie>,
	akpm@linux-foundation.org, Ury Stankevich <urykhy@gmail.com>,
	KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
	linux-kernel@vger.kernel.org, linux-mm@kvack.org,
	stable@kernel.org
Subject: Re: [PATCH] mm: compaction: Abort compaction if too many pages are isolated and caller is asynchronous
Date: Mon, 30 May 2011 19:53:34 +0200	[thread overview]
Message-ID: <20110530175334.GI19505@random.random> (raw)
In-Reply-To: <20110530165546.GC5118@suse.de>

On Mon, May 30, 2011 at 05:55:46PM +0100, Mel Gorman wrote:
> Even with drift issues, -1 there should be "impossible". Assuming this
> is a zoneinfo file, that figure is based on global_page_state() which
> looks like

The two cases reproducing this long hang in D state, had from SMP=n
PREEMPT=y. Clearly not common config these days. Also it didn't seem
apparent that any task was running in a code path that kept pages
isolated.

> unsigned long, and callers are using unsigned long, is there any
> possibility the "if (x < 0)" is being optimised out? If you aware

It was eliminated by cpp.

> of users reporting this problem (like the users in thread "iotop:
> khugepaged at 99.99% (2.6.38.3)"), do you know if they had a particular
> compiler in common?

I had no reason to worry about the compiler yet but that's always good
idea to keep in mind. The thread were the bug is reported is the
"iotop" one you mentioned, and there's a tarball attached to one of
the last emails of the thread with the debug data I grepped. It was
/proc/zoneinfo file yes. That's the file I asked when I noticed
something had to be wrong with too_many_isolated and I expected either
nr_isolated or nr_inactive going wrong, it turned out it was
nr_isolated (apparently, I don't have full picture on the problem
yet). I added you in CC to a few emails but you weren't in all
replies.

The debug data you can find on lkml in this email: Message-Id:
<201105232005.56840.johannes.hirte@fem.tu-ilmenau.de>.

The other relevant sysrq+t here http://pastebin.com/raw.php?i=VG28YRbi

better save the latter (I did) as I'm worried it has a timeout on it.

Your patch was for reports with CONFIG_SMP=y? I'd prefer to clear out
this error before improving the too_many_isolated, in fact while
reviewing this code I was not impressed by too_many_isolated. For
vmscan.c if there's an huge nr_active* list and a tiny nr_inactive
(like after a truncate of filebacked pages or munmap of anon memory)
there's no reason to stall, it's better to go ahead and let it refile
more active pages. The too_many_isolated in compaction.c looks a whole
lot better than the vmscan.c one as that takes into account the active
pages too... But I refrained to make any change in this area as I
don't think the bug is in too_many_isolated itself.

I noticed the count[] array is unsigned int, but it looks ok
(especially for 32bit ;) because the isolation is limited.

Both bugs were reported on 32bit x86 UP builds with PREEMPT=y. The
stat accounting seem to use atomics on UP so irqs on off or
PREEMPT=y/n shouldn't matter if the increment is 1 insn long (plus no
irq code should ever mess with nr_isolated)... If it wasn't atomic and
irqs or preempt aren't disabled it could be preempt. To avoid
confusion: it's not proven that PREEMPT is related, it may be an
accident both .config had it on. I'm also unsure why it moves from
-1,0,1 I wouldn't expect a single page to be isolated like -1 pages to
be isolated, it just looks weird...

  reply	other threads:[~2011-05-30 17:54 UTC|newest]

Thread overview: 63+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-05-30 13:13 [PATCH] mm: compaction: Abort compaction if too many pages are isolated and caller is asynchronous Mel Gorman
2011-05-30 14:31 ` Andrea Arcangeli
2011-05-30 15:37   ` Mel Gorman
2011-05-30 16:55     ` Mel Gorman
2011-05-30 17:53       ` Andrea Arcangeli [this message]
2011-05-31 12:16         ` Minchan Kim
2011-05-31 12:24           ` Andrea Arcangeli
2011-05-31 13:33             ` Minchan Kim
2011-05-31 14:14               ` Andrea Arcangeli
2011-05-31 14:37                 ` Minchan Kim
2011-05-31 14:38                   ` Minchan Kim
2011-06-02 18:23                     ` Andrea Arcangeli
2011-06-02 20:21                       ` Minchan Kim
2011-06-02 20:59                         ` Minchan Kim
2011-06-02 22:03                           ` Andrea Arcangeli
2011-06-02 21:40                         ` Andrea Arcangeli
2011-06-02 22:23                           ` Minchan Kim
2011-06-02 22:32                             ` Andrea Arcangeli
2011-06-02 23:01                               ` Minchan Kim
2011-06-03 17:37                                 ` Andrea Arcangeli
2011-06-03 18:07                                   ` Andrea Arcangeli
2011-06-04  7:59                                     ` Minchan Kim
2011-06-06 10:32                                     ` Mel Gorman
2011-06-06 12:49                                       ` Andrea Arcangeli
2011-06-06 14:47                                         ` Mel Gorman
2011-06-06 14:07                                       ` Minchan Kim
2011-06-06 10:15                                 ` Mel Gorman
2011-06-06 10:26                                   ` Mel Gorman
2011-06-06 14:01                                   ` Minchan Kim
2011-06-06 14:26                                   ` Minchan Kim
2011-06-02 23:02                       ` Minchan Kim
2011-06-01  0:57                 ` Mel Gorman
2011-06-01  9:24                   ` Mel Gorman
2011-06-01 17:58                   ` Mel Gorman
2011-06-01 19:15                     ` Andrea Arcangeli
2011-06-01 21:40                       ` Mel Gorman
2011-06-01 23:30                         ` Andrea Arcangeli
2011-06-02  1:03                           ` Mel Gorman
2011-06-02  8:34                             ` Minchan Kim
2011-06-02 13:29                             ` Andrea Arcangeli
2011-06-02 14:50                               ` Mel Gorman
2011-06-02 15:37                                 ` Andrea Arcangeli
2011-06-03  2:09                                   ` Mel Gorman
2011-06-03 14:49                                     ` Mel Gorman
2011-06-03 15:45                                       ` Andrea Arcangeli
2011-06-04  7:25                                         ` Minchan Kim
2011-06-06 10:39                                         ` Mel Gorman
2011-06-06 12:38                                           ` Andrea Arcangeli
2011-06-06 14:55                                             ` Mel Gorman
2011-06-06 14:19                                           ` Minchan Kim
2011-06-06 22:32                                         ` Andrew Morton
2011-06-04  6:58                                       ` Minchan Kim
2011-06-06 10:43                                         ` Mel Gorman
2011-06-06 12:40                                           ` Andrea Arcangeli
2011-06-06 13:27                                             ` Minchan Kim
2011-06-06 13:23                                           ` Minchan Kim
2011-05-31 14:34         ` Mel Gorman
2011-05-30 14:45 ` [stable] " Greg KH
2011-05-30 16:14 ` Minchan Kim
2011-05-31  8:32   ` Mel Gorman
2011-05-31  4:48 ` KAMEZAWA Hiroyuki
2011-05-31  5:38   ` Minchan Kim
2011-05-31  7:14 ` KOSAKI Motohiro

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=20110530175334.GI19505@random.random \
    --to=aarcange@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=kosaki.motohiro@jp.fujitsu.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mel@csn.ul.ie \
    --cc=mgorman@suse.de \
    --cc=stable@kernel.org \
    --cc=urykhy@gmail.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).