All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Rafael J. Wysocki" <rjw@sisk.pl>
To: David Rientjes <rientjes@google.com>
Cc: Pekka Enberg <penberg@kernel.org>,
	Minchan Kim <minchan.kim@gmail.com>,
	Colin Cross <ccross@android.com>, Mel Gorman <mgorman@suse.de>,
	Andrew Morton <akpm@linux-foundation.org>,
	Pekka Enberg <penberg@cs.helsinki.fi>,
	KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
	Andrea Arcangeli <aarcange@redhat.com>,
	LKML <linux-kernel@vger.kernel.org>,
	Linux-MM <linux-mm@kvack.org>
Subject: Re: [PATCH] mm: avoid livelock on !__GFP_FS allocations
Date: Wed, 16 Nov 2011 22:58:39 +0100	[thread overview]
Message-ID: <201111162258.39346.rjw@sisk.pl> (raw)
In-Reply-To: <alpine.DEB.2.00.1111161340010.16596@chino.kir.corp.google.com>

On Wednesday, November 16, 2011, David Rientjes wrote:
> On Wed, 16 Nov 2011, Pekka Enberg wrote:
> 
> > > diff --git a/kernel/power/suspend.c b/kernel/power/suspend.c
> > > index fdd4263..01aa9b5 100644
> > > --- a/kernel/power/suspend.c
> > > +++ b/kernel/power/suspend.c
> > > @@ -297,9 +297,11 @@ int enter_state(suspend_state_t state)
> > >                goto Finish;
> > > 
> > >        pr_debug("PM: Entering %s sleep\n", pm_states[state]);
> > > +       oom_killer_disable();
> > >        pm_restrict_gfp_mask();
> > >        error = suspend_devices_and_enter(state);
> > >        pm_restore_gfp_mask();
> > > +       oom_killer_enable();
> > > 
> > >  Finish:
> > >        pr_debug("PM: Finishing wakeup.\n");
> > > diff --git a/mm/page_alloc.c b/mm/page_alloc.c
> > > index 6e8ecb6..d8c31b7 100644
> > > --- a/mm/page_alloc.c
> > > +++ b/mm/page_alloc.c
> > > @@ -2177,9 +2177,9 @@ rebalance:
> > >         * running out of options and have to consider going OOM
> > >         */
> > >        if (!did_some_progress) {
> > > -               if ((gfp_mask & __GFP_FS) && !(gfp_mask & __GFP_NORETRY)) {
> > > -                       if (oom_killer_disabled)
> > > +               if (oom_killer_disabled)
> > >                                goto nopage;
> 
> You're allowing __GFP_NOFAIL allocations to fail.
> 
> > > +               if ((gfp_mask & __GFP_FS) && !(gfp_mask & __GFP_NORETRY)) {
> > >                        page = __alloc_pages_may_oom(gfp_mask, order,
> > >                                        zonelist, high_zoneidx,
> > >                                        nodemask, preferred_zone,
> > > 
> > 
> > I'd prefer something like this. The whole 'gfp_allowed_flags' thing was
> > designed to make GFP_KERNEL work during boot time where it's obviously safe to
> > do that. I really don't think that's going to work suspend cleanly.
> > 
> 
> Adding Rafael to the cc.
> 
> This has been done since 2.6.34 and presumably has been working quite 
> well.

Yes, it has.

> I don't have a specific objection to gfp_allowed_flags to be used 
> outside of boot since it seems plausible that there are system-level 
> contexts that would need different behavior in the page allocator and this 
> does it effectively without major surgery or a slower fastpath.  Suspend 
> is using it just like boot does before irqs are enabled, so I don't have 
> an objection to it.

Good. :-)

Thanks,
Rafael

--
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>

WARNING: multiple messages have this Message-ID (diff)
From: "Rafael J. Wysocki" <rjw@sisk.pl>
To: David Rientjes <rientjes@google.com>
Cc: Pekka Enberg <penberg@kernel.org>,
	Minchan Kim <minchan.kim@gmail.com>,
	Colin Cross <ccross@android.com>, Mel Gorman <mgorman@suse.de>,
	Andrew Morton <akpm@linux-foundation.org>,
	Pekka Enberg <penberg@cs.helsinki.fi>,
	KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
	Andrea Arcangeli <aarcange@redhat.com>,
	LKML <linux-kernel@vger.kernel.org>,
	"Linux-MM" <linux-mm@kvack.org>
Subject: Re: [PATCH] mm: avoid livelock on !__GFP_FS allocations
Date: Wed, 16 Nov 2011 22:58:39 +0100	[thread overview]
Message-ID: <201111162258.39346.rjw@sisk.pl> (raw)
In-Reply-To: <alpine.DEB.2.00.1111161340010.16596@chino.kir.corp.google.com>

On Wednesday, November 16, 2011, David Rientjes wrote:
> On Wed, 16 Nov 2011, Pekka Enberg wrote:
> 
> > > diff --git a/kernel/power/suspend.c b/kernel/power/suspend.c
> > > index fdd4263..01aa9b5 100644
> > > --- a/kernel/power/suspend.c
> > > +++ b/kernel/power/suspend.c
> > > @@ -297,9 +297,11 @@ int enter_state(suspend_state_t state)
> > >                goto Finish;
> > > 
> > >        pr_debug("PM: Entering %s sleep\n", pm_states[state]);
> > > +       oom_killer_disable();
> > >        pm_restrict_gfp_mask();
> > >        error = suspend_devices_and_enter(state);
> > >        pm_restore_gfp_mask();
> > > +       oom_killer_enable();
> > > 
> > >  Finish:
> > >        pr_debug("PM: Finishing wakeup.\n");
> > > diff --git a/mm/page_alloc.c b/mm/page_alloc.c
> > > index 6e8ecb6..d8c31b7 100644
> > > --- a/mm/page_alloc.c
> > > +++ b/mm/page_alloc.c
> > > @@ -2177,9 +2177,9 @@ rebalance:
> > >         * running out of options and have to consider going OOM
> > >         */
> > >        if (!did_some_progress) {
> > > -               if ((gfp_mask & __GFP_FS) && !(gfp_mask & __GFP_NORETRY)) {
> > > -                       if (oom_killer_disabled)
> > > +               if (oom_killer_disabled)
> > >                                goto nopage;
> 
> You're allowing __GFP_NOFAIL allocations to fail.
> 
> > > +               if ((gfp_mask & __GFP_FS) && !(gfp_mask & __GFP_NORETRY)) {
> > >                        page = __alloc_pages_may_oom(gfp_mask, order,
> > >                                        zonelist, high_zoneidx,
> > >                                        nodemask, preferred_zone,
> > > 
> > 
> > I'd prefer something like this. The whole 'gfp_allowed_flags' thing was
> > designed to make GFP_KERNEL work during boot time where it's obviously safe to
> > do that. I really don't think that's going to work suspend cleanly.
> > 
> 
> Adding Rafael to the cc.
> 
> This has been done since 2.6.34 and presumably has been working quite 
> well.

Yes, it has.

> I don't have a specific objection to gfp_allowed_flags to be used 
> outside of boot since it seems plausible that there are system-level 
> contexts that would need different behavior in the page allocator and this 
> does it effectively without major surgery or a slower fastpath.  Suspend 
> is using it just like boot does before irqs are enabled, so I don't have 
> an objection to it.

Good. :-)

Thanks,
Rafael

  reply	other threads:[~2011-11-16 21:55 UTC|newest]

Thread overview: 94+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-11-14 14:04 [PATCH] mm: avoid livelock on !__GFP_FS allocations Mel Gorman
2011-11-14 14:04 ` Mel Gorman
2011-11-14 18:38 ` Andrea Arcangeli
2011-11-14 18:38   ` Andrea Arcangeli
2011-11-15 10:30   ` Mel Gorman
2011-11-15 10:30     ` Mel Gorman
2011-11-14 23:03 ` Andrew Morton
2011-11-14 23:03   ` Andrew Morton
2011-11-15 10:42   ` Mel Gorman
2011-11-15 10:42     ` Mel Gorman
2011-11-15 15:43     ` Mel Gorman
2011-11-15 15:43       ` Mel Gorman
2011-11-15 16:13 ` Minchan Kim
2011-11-15 16:13   ` Minchan Kim
2011-11-15 17:36   ` Mel Gorman
2011-11-15 17:36     ` Mel Gorman
2011-11-16  0:22     ` Minchan Kim
2011-11-16  0:22       ` Minchan Kim
2011-11-16  0:28       ` Colin Cross
2011-11-16  0:28         ` Colin Cross
2011-11-16  0:45         ` Minchan Kim
2011-11-16  0:45           ` Minchan Kim
2011-11-16  7:10           ` Pekka Enberg
2011-11-16  7:10             ` Pekka Enberg
2011-11-16 21:44             ` David Rientjes
2011-11-16 21:44               ` David Rientjes
2011-11-16 21:58               ` Rafael J. Wysocki [this message]
2011-11-16 21:58                 ` Rafael J. Wysocki
2011-11-16 22:07               ` Minchan Kim
2011-11-16 22:07                 ` Minchan Kim
2011-11-16 22:48                 ` David Rientjes
2011-11-16 22:48                   ` David Rientjes
2011-11-15 21:40 ` David Rientjes
2011-11-15 21:40   ` David Rientjes
2011-11-16  9:52   ` Mel Gorman
2011-11-16  9:52     ` Mel Gorman
2011-11-16 21:39     ` David Rientjes
2011-11-16 21:39       ` David Rientjes
  -- strict thread matches above, loose matches on Subject: below --
2011-10-25  6:39 Colin Cross
2011-10-25  6:39 ` Colin Cross
2011-10-25  7:40 ` Pekka Enberg
2011-10-25  7:40   ` Pekka Enberg
2011-10-25  7:51   ` Colin Cross
2011-10-25  7:51     ` Colin Cross
2011-10-25  8:08     ` Pekka Enberg
2011-10-25  8:08       ` Pekka Enberg
2011-10-25 22:12     ` David Rientjes
2011-10-25 22:12       ` David Rientjes
2011-10-25  9:09 ` Mel Gorman
2011-10-25  9:09   ` Mel Gorman
2011-10-25  9:26   ` Colin Cross
2011-10-25  9:26     ` Colin Cross
2011-10-25 11:23     ` Mel Gorman
2011-10-25 11:23       ` Mel Gorman
2011-10-25 17:08       ` Colin Cross
2011-10-25 17:08         ` Colin Cross
2011-11-01 12:28         ` Mel Gorman
2011-11-01 12:28           ` Mel Gorman
2011-10-25 19:39       ` Pekka Enberg
2011-10-25 19:39         ` Pekka Enberg
2011-11-01 12:29         ` Mel Gorman
2011-11-01 12:29           ` Mel Gorman
2011-10-25 19:29   ` Colin Cross
2011-10-25 19:29     ` Colin Cross
2011-10-25 22:18   ` David Rientjes
2011-10-25 22:18     ` David Rientjes
2011-10-26  1:46     ` Colin Cross
2011-10-26  1:46       ` Colin Cross
2011-10-26  5:47       ` David Rientjes
2011-10-26  5:47         ` David Rientjes
2011-10-26  6:12         ` David Rientjes
2011-10-26  6:12           ` David Rientjes
2011-10-26  6:16           ` Colin Cross
2011-10-26  6:16             ` Colin Cross
2011-10-26  6:24             ` David Rientjes
2011-10-26  6:24               ` David Rientjes
2011-10-26  6:26               ` Colin Cross
2011-10-26  6:26                 ` Colin Cross
2011-10-26  6:33                 ` David Rientjes
2011-10-26  6:33                   ` David Rientjes
2011-10-26  6:36                   ` Colin Cross
2011-10-26  6:36                     ` Colin Cross
2011-10-26  6:51                     ` David Rientjes
2011-10-26  6:51                       ` David Rientjes
2011-10-26  6:57                       ` Colin Cross
2011-10-26  6:57                         ` Colin Cross
2011-10-26  7:10                         ` David Rientjes
2011-10-26  7:10                           ` David Rientjes
2011-10-26  7:22                           ` Colin Cross
2011-10-26  7:22                             ` Colin Cross
2011-11-01 12:36                             ` Mel Gorman
2011-11-01 12:36                               ` Mel Gorman
2011-10-25 22:10 ` David Rientjes
2011-10-25 22:10   ` David Rientjes

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=201111162258.39346.rjw@sisk.pl \
    --to=rjw@sisk.pl \
    --cc=aarcange@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=ccross@android.com \
    --cc=kamezawa.hiroyu@jp.fujitsu.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mgorman@suse.de \
    --cc=minchan.kim@gmail.com \
    --cc=penberg@cs.helsinki.fi \
    --cc=penberg@kernel.org \
    --cc=rientjes@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 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.