Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1447699

Re: [PATCH 1/5] mm, vmscan: Do not account skipped pages as scanned

From Mel Gorman <mgorman@techsingularity.net>
Newsgroups linux.kernel
Subject Re: [PATCH 1/5] mm, vmscan: Do not account skipped pages as scanned
Date 2016-07-21 10:20 +0200
Message-ID <rXhn4-4Uk-13@gated-at.bofh.it> (permalink)
References <rX1BD-39C-7@gated-at.bofh.it> <rX1BD-39C-21@gated-at.bofh.it> <rXeyR-35v-3@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


On Thu, Jul 21, 2016 at 02:16:48PM +0900, Minchan Kim wrote:
> On Wed, Jul 20, 2016 at 04:21:47PM +0100, Mel Gorman wrote:
> > Page reclaim determines whether a pgdat is unreclaimable by examining how
> > many pages have been scanned since a page was freed and comparing that
> > to the LRU sizes. Skipped pages are not considered reclaim candidates but
> > contribute to scanned. This can prematurely mark a pgdat as unreclaimable
> > and trigger an OOM kill.
> > 
> > While this does not fix an OOM kill message reported by Joonsoo Kim,
> > it did stop pgdat being marked unreclaimable.
> > 
> > Signed-off-by: Mel Gorman <mgorman@techsingularity.net>
> > ---
> >  mm/vmscan.c | 5 ++++-
> >  1 file changed, 4 insertions(+), 1 deletion(-)
> > 
> > diff --git a/mm/vmscan.c b/mm/vmscan.c
> > index 22aec2bcfeec..b16d578ce556 100644
> > --- a/mm/vmscan.c
> > +++ b/mm/vmscan.c
> > @@ -1415,7 +1415,7 @@ static unsigned long isolate_lru_pages(unsigned long nr_to_scan,
> >  	LIST_HEAD(pages_skipped);
> >  
> >  	for (scan = 0; scan < nr_to_scan && nr_taken < nr_to_scan &&
> > -					!list_empty(src); scan++) {
> > +					!list_empty(src);) {
> >  		struct page *page;
> >  
> >  		page = lru_to_page(src);
> > @@ -1429,6 +1429,9 @@ static unsigned long isolate_lru_pages(unsigned long nr_to_scan,
> >  			continue;
> >  		}
> >  
> > +		/* Pages skipped do not contribute to scan */
> 
> The comment should explain why.
> 
> /* Pages skipped do not contribute to scan to prevent premature OOM */
> 

Specifically, it's to prevent pgdat being considered unreclaimable
prematurely. I'll update the comment.

> 
> > +		scan++;
> > +
> 
> 
> The one of my concern about node-lru is to add more lru lock contetion
> in multiple zone system so such unbounded skip scanning under the lock
> should have a limit to prevent latency spike and serialization of
> current reclaim work.
> 

The LRU lock already was quite a large lock, particularly on NUMA systems,
with contention raising the more direct reclaimers that are active. It's
worth remembering that the series also shows much lower system CPU time
in some tests. This is the current CPU usage breakdown for a parallel dd test

           4.7.0-rc4   4.7.0-rc7   4.7.0-rc7
        mmotm-20160623mm1-followup-v3r1mm1-oomfix-v4r2
User         1548.01      927.23      777.74
System       8609.71     5540.02     4445.56
Elapsed      3587.10     3598.00     3498.54

The LRU lock is held during skips but it's also doing no real work.

> Another concern is big mismatch between the number of pages from list and
> LRU stat count because lruvec_lru_size call sites don't take the stat
> under the lock while isolate_lru_pages moves many pages from lru list
> to temporal skipped list.
> 

It's already known that the reading of the LRU size can mismatch the
actual size. It's why inactive_list_is_low() in the last patch has
checks like

inactive -= min(inactive, inactive_zone);

It's watching for underflows

-- 
Mel Gorman
SUSE Labs

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH 0/5] Candidate fixes for premature OOM kills with node-lru v1 Mel Gorman <mgorman@techsingularity.net> - 2016-07-20 17:30 +0200
  [PATCH 2/5] mm: add per-zone lru list stat Mel Gorman <mgorman@techsingularity.net> - 2016-07-20 17:30 +0200
    Re: [PATCH 2/5] mm: add per-zone lru list stat Joonsoo Kim <iamjoonsoo.kim@lge.com> - 2016-07-21 09:10 +0200
      Re: [PATCH 2/5] mm: add per-zone lru list stat Fengguang Wu <fengguang.wu@intel.com> - 2016-07-23 02:50 +0200
        Re: [PATCH 2/5] mm: add per-zone lru list stat Minchan Kim <minchan@kernel.org> - 2016-07-23 03:30 +0200
  [PATCH 3/5] mm, vmscan: Remove highmem_file_pages Mel Gorman <mgorman@techsingularity.net> - 2016-07-20 17:30 +0200
  [PATCH 1/5] mm, vmscan: Do not account skipped pages as scanned Mel Gorman <mgorman@techsingularity.net> - 2016-07-20 17:30 +0200
    Re: [PATCH 1/5] mm, vmscan: Do not account skipped pages as scanned Minchan Kim <minchan@kernel.org> - 2016-07-21 07:20 +0200
      Re: [PATCH 1/5] mm, vmscan: Do not account skipped pages as scanned Mel Gorman <mgorman@techsingularity.net> - 2016-07-21 10:20 +0200
        Re: [PATCH 1/5] mm, vmscan: Do not account skipped pages as scanned Minchan Kim <minchan@kernel.org> - 2016-07-21 10:40 +0200
    Re: [PATCH 1/5] mm, vmscan: Do not account skipped pages as scanned Minchan Kim <minchan@kernel.org> - 2016-07-25 10:10 +0200
      Re: [PATCH 1/5] mm, vmscan: Do not account skipped pages as scanned Mel Gorman <mgorman@techsingularity.net> - 2016-07-25 11:30 +0200
  [PATCH 4/5] mm: Remove reclaim and compaction retry approximations Mel Gorman <mgorman@techsingularity.net> - 2016-07-20 17:30 +0200
  Re: [PATCH 0/5] Candidate fixes for premature OOM kills with  node-lru v1 Minchan Kim <minchan@kernel.org> - 2016-07-21 09:10 +0200
    Re: [PATCH 0/5] Candidate fixes for premature OOM kills with  node-lru v1 Mel Gorman <mgorman@techsingularity.net> - 2016-07-21 11:20 +0200
  Re: [PATCH 0/5] Candidate fixes for premature OOM kills with  node-lru v1 Joonsoo Kim <iamjoonsoo.kim@lge.com> - 2016-07-21 09:30 +0200
    Re: [PATCH 0/5] Candidate fixes for premature OOM kills with  node-lru v1 Minchan Kim <minchan@kernel.org> - 2016-07-21 10:40 +0200
    Re: [PATCH 0/5] Candidate fixes for premature OOM kills with  node-lru v1 Mel Gorman <mgorman@techsingularity.net> - 2016-07-21 11:20 +0200

csiph-web