All of lore.kernel.org
 help / color / mirror / Atom feed
From: Wu Fengguang <fengguang.wu@intel.com>
To: Dave Young <hidave.darkstar@gmail.com>
Cc: linux-mm <linux-mm@kvack.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Mel Gorman <mel@linux.vnet.ibm.com>
Subject: Re: readahead and oom
Date: Tue, 26 Apr 2011 14:34:21 +0800	[thread overview]
Message-ID: <20110426063421.GC19717@localhost> (raw)
In-Reply-To: <BANLkTinM9DjK9QsGtN0Sh308rr+86UMF0A@mail.gmail.com>

On Tue, Apr 26, 2011 at 02:29:15PM +0800, Dave Young wrote:
> On Tue, Apr 26, 2011 at 2:25 PM, Wu Fengguang <fengguang.wu@intel.com> wrote:
> > On Tue, Apr 26, 2011 at 02:07:17PM +0800, Dave Young wrote:
> >> On Tue, Apr 26, 2011 at 2:05 PM, Dave Young <hidave.darkstar@gmail.com> wrote:
> >> > On Tue, Apr 26, 2011 at 1:55 PM, Wu Fengguang <fengguang.wu@intel.com> wrote:
> >> >> On Tue, Apr 26, 2011 at 01:49:25PM +0800, Dave Young wrote:
> >> >>> Hi,
> >> >>>
> >> >>> When memory pressure is high, readahead could cause oom killing.
> >> >>> IMHO we should stop readaheading under such circumstances。If it's true
> >> >>> how to fix it?
> >> >>
> >> >> Good question. Before OOM there will be readahead thrashings, which
> >> >> can be addressed by this patch:
> >> >>
> >> >> http://lkml.org/lkml/2010/2/2/229
> >> >
> >> > Hi, I'm not clear about the patch, could be regard as below cases?
> >> > 1) readahead alloc fail due to low memory such as other large allocation
> >>
> >> For example vm balloon allocate lots of memory, then readahead could
> >> fail immediately and then oom
> >
> > If true, that would be the problem of vm balloon. It's not good to
> > consume lots of memory all of a sudden, which will likely impact lots
> > of kernel subsystems.
> >
> > btw readahead page allocations are completely optional. They are OK to
> > fail and in theory shall not trigger OOM on themselves. We may
> > consider passing __GFP_NORETRY for readahead page allocations.
> 
> Good idea, care to submit a patch?

Here it is :)

Thanks,
Fengguang
---
readahead: readahead page allocations is OK to fail

Pass __GFP_NORETRY for readahead page allocations.

readahead page allocations are completely optional. They are OK to
fail and in particular shall not trigger OOM on themselves.

Reported-by: Dave Young <hidave.darkstar@gmail.com>
Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
---
 include/linux/pagemap.h |    5 +++++
 mm/readahead.c          |    2 +-
 2 files changed, 6 insertions(+), 1 deletion(-)

--- linux-next.orig/include/linux/pagemap.h	2011-04-26 14:27:46.000000000 +0800
+++ linux-next/include/linux/pagemap.h	2011-04-26 14:29:31.000000000 +0800
@@ -219,6 +219,11 @@ static inline struct page *page_cache_al
 	return __page_cache_alloc(mapping_gfp_mask(x)|__GFP_COLD);
 }
 
+static inline struct page *page_cache_alloc_cold_noretry(struct address_space *x)
+{
+	return __page_cache_alloc(mapping_gfp_mask(x)|__GFP_COLD|__GFP_NORETRY);
+}
+
 typedef int filler_t(void *, struct page *);
 
 extern struct page * find_get_page(struct address_space *mapping,
--- linux-next.orig/mm/readahead.c	2011-04-26 14:27:02.000000000 +0800
+++ linux-next/mm/readahead.c	2011-04-26 14:27:24.000000000 +0800
@@ -180,7 +180,7 @@ __do_page_cache_readahead(struct address
 		if (page)
 			continue;
 
-		page = page_cache_alloc_cold(mapping);
+		page = page_cache_alloc_cold_noretry(mapping);
 		if (!page)
 			break;
 		page->index = page_offset;

WARNING: multiple messages have this Message-ID (diff)
From: Wu Fengguang <fengguang.wu@intel.com>
To: Dave Young <hidave.darkstar@gmail.com>
Cc: linux-mm <linux-mm@kvack.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Mel Gorman <mel@linux.vnet.ibm.com>
Subject: Re: readahead and oom
Date: Tue, 26 Apr 2011 14:34:21 +0800	[thread overview]
Message-ID: <20110426063421.GC19717@localhost> (raw)
In-Reply-To: <BANLkTinM9DjK9QsGtN0Sh308rr+86UMF0A@mail.gmail.com>

On Tue, Apr 26, 2011 at 02:29:15PM +0800, Dave Young wrote:
> On Tue, Apr 26, 2011 at 2:25 PM, Wu Fengguang <fengguang.wu@intel.com> wrote:
> > On Tue, Apr 26, 2011 at 02:07:17PM +0800, Dave Young wrote:
> >> On Tue, Apr 26, 2011 at 2:05 PM, Dave Young <hidave.darkstar@gmail.com> wrote:
> >> > On Tue, Apr 26, 2011 at 1:55 PM, Wu Fengguang <fengguang.wu@intel.com> wrote:
> >> >> On Tue, Apr 26, 2011 at 01:49:25PM +0800, Dave Young wrote:
> >> >>> Hi,
> >> >>>
> >> >>> When memory pressure is high, readahead could cause oom killing.
> >> >>> IMHO we should stop readaheading under such circumstancesa??If it's true
> >> >>> how to fix it?
> >> >>
> >> >> Good question. Before OOM there will be readahead thrashings, which
> >> >> can be addressed by this patch:
> >> >>
> >> >> http://lkml.org/lkml/2010/2/2/229
> >> >
> >> > Hi, I'm not clear about the patch, could be regard as below cases?
> >> > 1) readahead alloc fail due to low memory such as other large allocation
> >>
> >> For example vm balloon allocate lots of memory, then readahead could
> >> fail immediately and then oom
> >
> > If true, that would be the problem of vm balloon. It's not good to
> > consume lots of memory all of a sudden, which will likely impact lots
> > of kernel subsystems.
> >
> > btw readahead page allocations are completely optional. They are OK to
> > fail and in theory shall not trigger OOM on themselves. We may
> > consider passing __GFP_NORETRY for readahead page allocations.
> 
> Good idea, care to submit a patch?

Here it is :)

Thanks,
Fengguang
---
readahead: readahead page allocations is OK to fail

Pass __GFP_NORETRY for readahead page allocations.

readahead page allocations are completely optional. They are OK to
fail and in particular shall not trigger OOM on themselves.

Reported-by: Dave Young <hidave.darkstar@gmail.com>
Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
---
 include/linux/pagemap.h |    5 +++++
 mm/readahead.c          |    2 +-
 2 files changed, 6 insertions(+), 1 deletion(-)

--- linux-next.orig/include/linux/pagemap.h	2011-04-26 14:27:46.000000000 +0800
+++ linux-next/include/linux/pagemap.h	2011-04-26 14:29:31.000000000 +0800
@@ -219,6 +219,11 @@ static inline struct page *page_cache_al
 	return __page_cache_alloc(mapping_gfp_mask(x)|__GFP_COLD);
 }
 
+static inline struct page *page_cache_alloc_cold_noretry(struct address_space *x)
+{
+	return __page_cache_alloc(mapping_gfp_mask(x)|__GFP_COLD|__GFP_NORETRY);
+}
+
 typedef int filler_t(void *, struct page *);
 
 extern struct page * find_get_page(struct address_space *mapping,
--- linux-next.orig/mm/readahead.c	2011-04-26 14:27:02.000000000 +0800
+++ linux-next/mm/readahead.c	2011-04-26 14:27:24.000000000 +0800
@@ -180,7 +180,7 @@ __do_page_cache_readahead(struct address
 		if (page)
 			continue;
 
-		page = page_cache_alloc_cold(mapping);
+		page = page_cache_alloc_cold_noretry(mapping);
 		if (!page)
 			break;
 		page->index = page_offset;

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

  reply	other threads:[~2011-04-26  6:34 UTC|newest]

Thread overview: 84+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-04-26  5:49 readahead and oom Dave Young
2011-04-26  5:49 ` Dave Young
2011-04-26  5:55 ` Wu Fengguang
2011-04-26  5:55   ` Wu Fengguang
2011-04-26  6:05   ` Dave Young
2011-04-26  6:05     ` Dave Young
2011-04-26  6:07     ` Dave Young
2011-04-26  6:07       ` Dave Young
2011-04-26  6:25       ` Wu Fengguang
2011-04-26  6:25         ` Wu Fengguang
2011-04-26  6:29         ` Dave Young
2011-04-26  6:29           ` Dave Young
2011-04-26  6:34           ` Wu Fengguang [this message]
2011-04-26  6:34             ` Wu Fengguang
2011-04-26  6:50             ` KOSAKI Motohiro
2011-04-26  6:50               ` KOSAKI Motohiro
2011-04-26  7:41             ` Minchan Kim
2011-04-26  7:41               ` Minchan Kim
2011-04-26  9:20               ` Wu Fengguang
2011-04-26  9:20                 ` Wu Fengguang
2011-04-26  9:28                 ` Minchan Kim
2011-04-26  9:28                   ` Minchan Kim
2011-04-26 10:18                   ` Pekka Enberg
2011-04-26 10:18                     ` Pekka Enberg
2011-04-26 19:47                 ` Andrew Morton
2011-04-26 19:47                   ` Andrew Morton
2011-04-28  4:19                   ` Wu Fengguang
2011-04-28 13:36                   ` [RFC][PATCH] mm: cut down __GFP_NORETRY page allocation failures Wu Fengguang
2011-04-28 13:36                     ` Wu Fengguang
2011-04-28 13:38                     ` [patch] vmstat: account " Wu Fengguang
2011-04-28 13:38                       ` Wu Fengguang
2011-04-28 13:50                       ` KOSAKI Motohiro
2011-04-28 13:50                         ` KOSAKI Motohiro
2011-04-29  2:28                     ` [RFC][PATCH] mm: cut down __GFP_NORETRY " Wu Fengguang
2011-04-29  2:28                       ` Wu Fengguang
2011-04-29  2:58                       ` Wu Fengguang
2011-04-29  2:58                         ` Wu Fengguang
2011-04-30 14:17                       ` Wu Fengguang
2011-04-30 14:17                         ` Wu Fengguang
2011-05-01 16:35                         ` Minchan Kim
2011-05-01 16:35                           ` Minchan Kim
2011-05-01 16:37                           ` Minchan Kim
2011-05-01 16:37                             ` Minchan Kim
2011-05-02 10:14                             ` KOSAKI Motohiro
2011-05-02 10:14                               ` KOSAKI Motohiro
2011-05-03  0:53                               ` Minchan Kim
2011-05-03  0:53                                 ` Minchan Kim
2011-05-03  1:25                                 ` KOSAKI Motohiro
2011-05-03  1:25                                   ` KOSAKI Motohiro
2011-05-02 10:29                           ` Wu Fengguang
2011-05-02 11:08                             ` Wu Fengguang
2011-05-02 11:08                               ` Wu Fengguang
2011-05-03  0:49                             ` Minchan Kim
2011-05-03  0:49                               ` Minchan Kim
2011-05-03  3:51                               ` Wu Fengguang
2011-05-03  3:51                                 ` Wu Fengguang
2011-05-03  4:17                                 ` Minchan Kim
2011-05-03  4:17                                   ` Minchan Kim
2011-05-02 13:29                           ` Wu Fengguang
2011-05-02 13:29                             ` Wu Fengguang
2011-05-02 13:49                             ` Wu Fengguang
2011-05-02 13:49                               ` Wu Fengguang
2011-05-03  0:27                               ` Satoru Moriya
2011-05-03  0:27                                 ` Satoru Moriya
2011-05-03  2:49                                 ` Wu Fengguang
2011-05-03  2:49                                   ` Wu Fengguang
2011-05-04  1:56                     ` Dave Young
2011-05-04  1:56                       ` Dave Young
2011-05-04  2:32                       ` Dave Young
2011-05-04  2:32                         ` Dave Young
2011-05-04  2:56                         ` Wu Fengguang
2011-05-04  2:56                           ` Wu Fengguang
2011-05-04  4:23                           ` Wu Fengguang
2011-05-04  4:23                             ` Wu Fengguang
2011-05-04  4:00                       ` Wu Fengguang
2011-05-04  4:00                         ` Wu Fengguang
2011-05-04  7:33                         ` Dave Young
2011-05-04  7:33                           ` Dave Young
2011-04-26  6:13     ` readahead and oom Wu Fengguang
2011-04-26  6:13       ` Wu Fengguang
2011-04-26  6:23       ` Dave Young
2011-04-26  6:23         ` Dave Young
2011-04-26  9:37 ` [PATCH] mm: readahead page allocations are OK to fail Wu Fengguang
2011-04-26  9:37   ` Wu Fengguang

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=20110426063421.GC19717@localhost \
    --to=fengguang.wu@intel.com \
    --cc=akpm@linux-foundation.org \
    --cc=hidave.darkstar@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mel@linux.vnet.ibm.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.