All of lore.kernel.org
 help / color / mirror / Atom feed
From: Johannes Weiner <hannes@cmpxchg.org>
To: Minchan Kim <minchan@kernel.org>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	linux-mm@kvack.org, linux-kernel@vger.kernel.org,
	Dan Magenheimer <dan.magenheimer@oracle.com>,
	Sonny Rao <sonnyrao@google.com>, Bryan Freed <bfreed@google.com>,
	Hugh Dickins <hughd@google.com>, Rik van Riel <riel@redhat.com>
Subject: Re: [PATCH 1/2] mm: prevent to add a page to swap if may_writepage is unset
Date: Wed, 9 Jan 2013 01:56:12 -0500	[thread overview]
Message-ID: <20130109065612.GB8550@cmpxchg.org> (raw)
In-Reply-To: <1357712474-27595-2-git-send-email-minchan@kernel.org>

On Wed, Jan 09, 2013 at 03:21:13PM +0900, Minchan Kim wrote:
> Recently, Luigi reported there are lots of free swap space when
> OOM happens. It's easily reproduced on zram-over-swap, where
> many instance of memory hogs are running and laptop_mode is enabled.
> 
> Luigi reported there was no problem when he disabled laptop_mode.
> The problem when I investigate problem is following as.
> 
> try_to_free_pages disable may_writepage if laptop_mode is enabled.
> shrink_page_list adds lots of anon pages in swap cache by
> add_to_swap, which makes pages Dirty and rotate them to head of
> inactive LRU without pageout. If it is repeated, inactive anon LRU
> is full of Dirty and SwapCache pages.
> 
> In case of that, isolate_lru_pages fails because it try to isolate
> clean page due to may_writepage == 0.
> 
> The may_writepage could be 1 only if total_scanned is higher than
> writeback_threshold in do_try_to_free_pages but unfortunately,
> VM can't isolate anon pages from inactive anon lru list by
> above reason and we already reclaimed all file-backed pages.
> So it ends up OOM killing.
> 
> This patch prevents to add a page to swap cache unnecessary when
> may_writepage is unset so anoymous lru list isn't full of
> Dirty/Swapcache page. So VM can isolate pages from anon lru list,
> which ends up setting may_writepage to 1 and could swap out
> anon lru pages. When OOM triggers, I confirmed swap space was full.
> 
> Reported-by: Luigi Semenzato <semenzato@google.com>
> Signed-off-by: Minchan Kim <minchan@kernel.org>

Acked-by: Johannes Weiner <hannes@cmpxchg.org>

We used to ignore the page's writeback state on isolation in the past,
could you include a reference to since when this problem has been in
the tree?  Also, would it make sense to tag it for one of the stable
trees?

WARNING: multiple messages have this Message-ID (diff)
From: Johannes Weiner <hannes@cmpxchg.org>
To: Minchan Kim <minchan@kernel.org>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	linux-mm@kvack.org, linux-kernel@vger.kernel.org,
	Dan Magenheimer <dan.magenheimer@oracle.com>,
	Sonny Rao <sonnyrao@google.com>, Bryan Freed <bfreed@google.com>,
	Hugh Dickins <hughd@google.com>, Rik van Riel <riel@redhat.com>
Subject: Re: [PATCH 1/2] mm: prevent to add a page to swap if may_writepage is unset
Date: Wed, 9 Jan 2013 01:56:12 -0500	[thread overview]
Message-ID: <20130109065612.GB8550@cmpxchg.org> (raw)
In-Reply-To: <1357712474-27595-2-git-send-email-minchan@kernel.org>

On Wed, Jan 09, 2013 at 03:21:13PM +0900, Minchan Kim wrote:
> Recently, Luigi reported there are lots of free swap space when
> OOM happens. It's easily reproduced on zram-over-swap, where
> many instance of memory hogs are running and laptop_mode is enabled.
> 
> Luigi reported there was no problem when he disabled laptop_mode.
> The problem when I investigate problem is following as.
> 
> try_to_free_pages disable may_writepage if laptop_mode is enabled.
> shrink_page_list adds lots of anon pages in swap cache by
> add_to_swap, which makes pages Dirty and rotate them to head of
> inactive LRU without pageout. If it is repeated, inactive anon LRU
> is full of Dirty and SwapCache pages.
> 
> In case of that, isolate_lru_pages fails because it try to isolate
> clean page due to may_writepage == 0.
> 
> The may_writepage could be 1 only if total_scanned is higher than
> writeback_threshold in do_try_to_free_pages but unfortunately,
> VM can't isolate anon pages from inactive anon lru list by
> above reason and we already reclaimed all file-backed pages.
> So it ends up OOM killing.
> 
> This patch prevents to add a page to swap cache unnecessary when
> may_writepage is unset so anoymous lru list isn't full of
> Dirty/Swapcache page. So VM can isolate pages from anon lru list,
> which ends up setting may_writepage to 1 and could swap out
> anon lru pages. When OOM triggers, I confirmed swap space was full.
> 
> Reported-by: Luigi Semenzato <semenzato@google.com>
> Signed-off-by: Minchan Kim <minchan@kernel.org>

Acked-by: Johannes Weiner <hannes@cmpxchg.org>

We used to ignore the page's writeback state on isolation in the past,
could you include a reference to since when this problem has been in
the tree?  Also, would it make sense to tag it for one of the stable
trees?

--
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/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  reply	other threads:[~2013-01-09  6:56 UTC|newest]

Thread overview: 58+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-01-09  6:21 [PATCH 0/2] Use up free swap space before reaching OOM kill Minchan Kim
2013-01-09  6:21 ` [PATCH 1/2] mm: prevent to add a page to swap if may_writepage is unset Minchan Kim
2013-01-09  6:21   ` Minchan Kim
2013-01-09  6:56   ` Johannes Weiner [this message]
2013-01-09  6:56     ` Johannes Weiner
2013-01-09  7:10     ` Minchan Kim
2013-01-09  7:10       ` Minchan Kim
2013-01-10  0:18   ` Andrew Morton
2013-01-10  0:18     ` Andrew Morton
2013-01-10  2:03     ` Minchan Kim
2013-01-10  2:03       ` Minchan Kim
2013-01-10 23:24       ` Luigi Semenzato
2013-01-10 23:27         ` Luigi Semenzato
2013-01-10 23:27           ` Luigi Semenzato
2013-01-11  4:03         ` Minchan Kim
2013-01-11  4:03           ` Minchan Kim
2013-01-10  0:20   ` Andrew Morton
2013-01-10  0:20     ` Andrew Morton
2013-01-16 21:41   ` Andrew Morton
2013-01-16 21:41     ` Andrew Morton
2013-01-17  0:53     ` Minchan Kim
2013-01-17  0:53       ` Minchan Kim
2013-01-17 22:22       ` Andrew Morton
2013-01-17 22:22         ` Andrew Morton
2013-01-17 23:36         ` Minchan Kim
2013-01-17 23:36           ` Minchan Kim
2013-01-21  1:52           ` Minchan Kim
2013-01-21  1:52             ` Minchan Kim
2013-01-21 14:39             ` Rik van Riel
2013-01-21 14:39               ` Rik van Riel
2013-01-22  0:09               ` Minchan Kim
2013-01-22  0:09                 ` Minchan Kim
2013-02-05  1:43                 ` Minchan Kim
2013-02-05  1:43                   ` Minchan Kim
2013-01-09  6:21 ` [PATCH 2/2] mm: forcely swapout when we are out of page cache Minchan Kim
2013-01-09  6:21   ` Minchan Kim
2013-01-10  0:26   ` Andrew Morton
2013-01-10  0:26     ` Andrew Morton
2013-01-10  2:23     ` Minchan Kim
2013-01-10  2:23       ` Minchan Kim
2013-01-10 21:58       ` Andrew Morton
2013-01-10 21:58         ` Andrew Morton
2013-01-11  4:43         ` Minchan Kim
2013-01-11  4:43           ` Minchan Kim
2013-01-16  0:09           ` Andrew Morton
2013-01-16  0:09             ` Andrew Morton
2013-01-16  0:32             ` Sonny Rao
2013-01-16  0:32               ` Sonny Rao
2013-01-16  0:50               ` Andrew Morton
2013-01-16  0:50                 ` Andrew Morton
2013-01-16  1:21                 ` Sonny Rao
2013-01-16  1:21                   ` Sonny Rao
2013-01-16  4:47                   ` Minchan Kim
2013-01-16  4:47                     ` Minchan Kim
2013-01-16 20:08                     ` Sonny Rao
2013-01-16 20:08                       ` Sonny Rao
2013-01-16  4:43             ` Minchan Kim
2013-01-16  4:43               ` Minchan Kim

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=20130109065612.GB8550@cmpxchg.org \
    --to=hannes@cmpxchg.org \
    --cc=akpm@linux-foundation.org \
    --cc=bfreed@google.com \
    --cc=dan.magenheimer@oracle.com \
    --cc=hughd@google.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=minchan@kernel.org \
    --cc=riel@redhat.com \
    --cc=sonnyrao@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.