All of lore.kernel.org
 help / color / mirror / Atom feed
From: Johannes Weiner <hannes@cmpxchg.org>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Dave Chinner <david@fromorbit.com>,
	Rik van Riel <riel@redhat.com>, Jan Kara <jack@suse.cz>,
	Vlastimil Babka <vbabka@suse.cz>,
	Peter Zijlstra <peterz@infradead.org>, Tejun Heo <tj@kernel.org>,
	Andi Kleen <andi@firstfloor.org>,
	Andrea Arcangeli <aarcange@redhat.com>,
	Greg Thelen <gthelen@google.com>,
	Christoph Hellwig <hch@infradead.org>,
	Hugh Dickins <hughd@google.com>,
	KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
	Mel Gorman <mgorman@suse.de>, Minchan Kim <minchan.kim@gmail.com>,
	Michel Lespinasse <walken@google.com>,
	Seth Jennings <sjenning@linux.vnet.ibm.com>,
	Roman Gushchin <klamm@yandex-team.ru>,
	Ozgun Erdogan <ozgun@citusdata.com>,
	Metin Doslu <metin@citusdata.com>,
	linux-mm@kvack.org, linux-fsdevel@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: Re: [patch 7/9] mm: thrash detection-based file cache sizing
Date: Mon, 25 Nov 2013 21:15:46 -0500	[thread overview]
Message-ID: <20131126021546.GW3556@cmpxchg.org> (raw)
In-Reply-To: <20131125155011.2f1320ab422436b1204bd15e@linux-foundation.org>

On Mon, Nov 25, 2013 at 03:50:11PM -0800, Andrew Morton wrote:
> On Sun, 24 Nov 2013 18:38:26 -0500 Johannes Weiner <hannes@cmpxchg.org> wrote:
> 
> > ...
> >
> > + *		Access frequency and refault distance
> > + *
> > + * A workload is trashing when its pages are frequently used but they
> > + * are evicted from the inactive list every time before another access
> > + * would have promoted them to the active list.
> > + *
> > + * In cases where the average access distance between thrashing pages
> > + * is bigger than the size of memory there is nothing that can be
> > + * done - the thrashing set could never fit into memory under any
> > + * circumstance.
> > + *
> > + * However, the average access distance could be bigger than the
> > + * inactive list, yet smaller than the size of memory.  In this case,
> > + * the set could fit into memory if it weren't for the currently
> > + * active pages - which may be used more, hopefully less frequently:
> > + *
> > + *      +-memory available to cache-+
> > + *      |                           |
> > + *      +-inactive------+-active----+
> > + *  a b | c d e f g h i | J K L M N |
> > + *      +---------------+-----------+
> 
> So making the inactive list smaller will worsen this problem?

Only if the inactive list size is a factor in detecting repeatedly
used pages.  This patch series is all about removing that dependency
and using non-residency information to cover that deficit a small
inactive list would otherwise create.

> If so, don't we have a conflict with this objective:
> 
> > Right now we have a fixed ratio (50:50) between inactive and active
> > list but we already have complaints about working sets exceeding half
> > of memory being pushed out of the cache by simple streaming in the
> > background.  Ultimately, we want to adjust this ratio and allow for a
> > much smaller inactive list.

No, this IS the objective.  The patches get us there by being able to
detect repeated references with an arbitrary inactive list size.

> > + * It is prohibitively expensive to accurately track access frequency
> > + * of pages.  But a reasonable approximation can be made to measure
> > + * thrashing on the inactive list, after which refaulting pages can be
> > + * activated optimistically to compete with the existing active pages.
> > + *
> > + * Approximating inactive page access frequency - Observations:
> > + *
> > + * 1. When a page is accesed for the first time, it is added to the
> 
> "accessed"

Whoopsa :-)  Will fix that up.

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

WARNING: multiple messages have this Message-ID (diff)
From: Johannes Weiner <hannes@cmpxchg.org>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Dave Chinner <david@fromorbit.com>,
	Rik van Riel <riel@redhat.com>, Jan Kara <jack@suse.cz>,
	Vlastimil Babka <vbabka@suse.cz>,
	Peter Zijlstra <peterz@infradead.org>, Tejun Heo <tj@kernel.org>,
	Andi Kleen <andi@firstfloor.org>,
	Andrea Arcangeli <aarcange@redhat.com>,
	Greg Thelen <gthelen@google.com>,
	Christoph Hellwig <hch@infradead.org>,
	Hugh Dickins <hughd@google.com>,
	KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
	Mel Gorman <mgorman@suse.de>, Minchan Kim <minchan.kim@gmail.com>,
	Michel Lespinasse <walken@google.com>,
	Seth Jennings <sjenning@linux.vnet.ibm.com>,
	Roman Gushchin <klamm@yandex-team.ru>,
	Ozgun Erdogan <ozgun@citusdata.com>,
	Metin Doslu <metin@citusdata.com>,
	linux-mm@kvack.org, linux-fsdevel@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: Re: [patch 7/9] mm: thrash detection-based file cache sizing
Date: Mon, 25 Nov 2013 21:15:46 -0500	[thread overview]
Message-ID: <20131126021546.GW3556@cmpxchg.org> (raw)
In-Reply-To: <20131125155011.2f1320ab422436b1204bd15e@linux-foundation.org>

On Mon, Nov 25, 2013 at 03:50:11PM -0800, Andrew Morton wrote:
> On Sun, 24 Nov 2013 18:38:26 -0500 Johannes Weiner <hannes@cmpxchg.org> wrote:
> 
> > ...
> >
> > + *		Access frequency and refault distance
> > + *
> > + * A workload is trashing when its pages are frequently used but they
> > + * are evicted from the inactive list every time before another access
> > + * would have promoted them to the active list.
> > + *
> > + * In cases where the average access distance between thrashing pages
> > + * is bigger than the size of memory there is nothing that can be
> > + * done - the thrashing set could never fit into memory under any
> > + * circumstance.
> > + *
> > + * However, the average access distance could be bigger than the
> > + * inactive list, yet smaller than the size of memory.  In this case,
> > + * the set could fit into memory if it weren't for the currently
> > + * active pages - which may be used more, hopefully less frequently:
> > + *
> > + *      +-memory available to cache-+
> > + *      |                           |
> > + *      +-inactive------+-active----+
> > + *  a b | c d e f g h i | J K L M N |
> > + *      +---------------+-----------+
> 
> So making the inactive list smaller will worsen this problem?

Only if the inactive list size is a factor in detecting repeatedly
used pages.  This patch series is all about removing that dependency
and using non-residency information to cover that deficit a small
inactive list would otherwise create.

> If so, don't we have a conflict with this objective:
> 
> > Right now we have a fixed ratio (50:50) between inactive and active
> > list but we already have complaints about working sets exceeding half
> > of memory being pushed out of the cache by simple streaming in the
> > background.  Ultimately, we want to adjust this ratio and allow for a
> > much smaller inactive list.

No, this IS the objective.  The patches get us there by being able to
detect repeated references with an arbitrary inactive list size.

> > + * It is prohibitively expensive to accurately track access frequency
> > + * of pages.  But a reasonable approximation can be made to measure
> > + * thrashing on the inactive list, after which refaulting pages can be
> > + * activated optimistically to compete with the existing active pages.
> > + *
> > + * Approximating inactive page access frequency - Observations:
> > + *
> > + * 1. When a page is accesed for the first time, it is added to the
> 
> "accessed"

Whoopsa :-)  Will fix that up.

  reply	other threads:[~2013-11-26  2:15 UTC|newest]

Thread overview: 83+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-11-24 23:38 [patch 0/9] mm: thrash detection-based file cache sizing v6 Johannes Weiner
2013-11-24 23:38 ` Johannes Weiner
2013-11-24 23:38 ` [patch 1/9] fs: cachefiles: use add_to_page_cache_lru() Johannes Weiner
2013-11-24 23:38   ` Johannes Weiner
2013-11-24 23:38 ` [patch 2/9] lib: radix-tree: radix_tree_delete_item() Johannes Weiner
2013-11-24 23:38   ` Johannes Weiner
2013-11-25  8:21   ` Minchan Kim
2013-11-25  8:21     ` Minchan Kim
2013-11-24 23:38 ` [patch 3/9] mm: shmem: save one radix tree lookup when truncating swapped pages Johannes Weiner
2013-11-24 23:38   ` Johannes Weiner
2013-11-25  8:21   ` Minchan Kim
2013-11-25  8:21     ` Minchan Kim
2013-11-24 23:38 ` [patch 4/9] mm: filemap: move radix tree hole searching here Johannes Weiner
2013-11-24 23:38   ` Johannes Weiner
2013-11-24 23:38 ` [patch 5/9] mm + fs: prepare for non-page entries in page cache radix trees Johannes Weiner
2013-11-24 23:38   ` Johannes Weiner
2013-11-24 23:38 ` [patch 6/9] mm + fs: store shadow entries in page cache Johannes Weiner
2013-11-24 23:38   ` Johannes Weiner
2013-11-25 23:17   ` Dave Chinner
2013-11-25 23:17     ` Dave Chinner
2013-11-26 10:20     ` Peter Zijlstra
2013-11-26 10:20       ` Peter Zijlstra
2013-11-27 16:45       ` Johannes Weiner
2013-11-27 16:45         ` Johannes Weiner
2013-11-27 17:08     ` Johannes Weiner
2013-11-27 17:08       ` Johannes Weiner
2013-11-27 23:32       ` Dave Chinner
2013-11-27 23:32         ` Dave Chinner
2013-11-24 23:38 ` [patch 7/9] mm: thrash detection-based file cache sizing Johannes Weiner
2013-11-24 23:38   ` Johannes Weiner
2013-11-25 23:50   ` Andrew Morton
2013-11-25 23:50     ` Andrew Morton
2013-11-26  2:15     ` Johannes Weiner [this message]
2013-11-26  2:15       ` Johannes Weiner
2013-11-26  1:56   ` Ryan Mallon
2013-11-26  1:56     ` Ryan Mallon
2013-11-26 20:57     ` Johannes Weiner
2013-11-26 20:57       ` Johannes Weiner
2013-11-24 23:38 ` [patch 8/9] lib: radix_tree: tree node interface Johannes Weiner
2013-11-24 23:38   ` Johannes Weiner
2013-11-24 23:38 ` [patch 9/9] mm: keep page cache radix tree nodes in check Johannes Weiner
2013-11-24 23:38   ` Johannes Weiner
2013-11-25 23:49   ` Dave Chinner
2013-11-25 23:49     ` Dave Chinner
2013-11-26 21:27     ` Johannes Weiner
2013-11-26 21:27       ` Johannes Weiner
2013-11-26 22:29       ` Dave Chinner
2013-11-26 22:29         ` Dave Chinner
2013-11-26 23:00         ` Johannes Weiner
2013-11-26 23:00           ` Johannes Weiner
2013-11-27  0:59           ` Dave Chinner
2013-11-27  0:59             ` Dave Chinner
2013-11-26  0:13   ` Andrew Morton
2013-11-26  0:13     ` Andrew Morton
2013-11-26 22:05     ` Johannes Weiner
2013-11-26 22:05       ` Johannes Weiner
2013-11-26  0:57 ` [patch 0/9] mm: thrash detection-based file cache sizing v6 Andrew Morton
2013-11-26  0:57   ` Andrew Morton
2013-11-26 22:30   ` Johannes Weiner
2013-11-26 22:30     ` Johannes Weiner
2013-11-28  4:40 ` Johannes Weiner
2013-11-28  4:40   ` Johannes Weiner
  -- strict thread matches above, loose matches on Subject: below --
2013-12-02 19:21 [patch 0/9] mm: thrash detection-based file cache sizing v7 Johannes Weiner
2013-12-02 19:21 ` [patch 7/9] mm: thrash detection-based file cache sizing Johannes Weiner
2013-12-02 19:21   ` Johannes Weiner
2014-01-10 18:10 [patch 0/9] mm: thrash detection-based file cache sizing v8 Johannes Weiner
2014-01-10 18:10 ` [patch 7/9] mm: thrash detection-based file cache sizing Johannes Weiner
2014-01-10 18:10   ` Johannes Weiner
2014-01-10 22:51   ` Rik van Riel
2014-01-10 22:51     ` Rik van Riel
2014-01-10 22:51     ` Rik van Riel
2014-01-13  2:42   ` Minchan Kim
2014-01-13  2:42     ` Minchan Kim
2014-01-14  1:01   ` Bob Liu
2014-01-14  1:01     ` Bob Liu
2014-01-14  1:01     ` Bob Liu
2014-01-14 19:16     ` Johannes Weiner
2014-01-14 19:16       ` Johannes Weiner
2014-01-15  2:57       ` Bob Liu
2014-01-15  2:57         ` Bob Liu
2014-01-15  2:57         ` Bob Liu
2014-01-15  3:52         ` Zhang Yanfei
2014-01-15  3:52           ` Zhang Yanfei
2014-01-16 21:17         ` Johannes Weiner
2014-01-16 21:17           ` Johannes Weiner

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=20131126021546.GW3556@cmpxchg.org \
    --to=hannes@cmpxchg.org \
    --cc=aarcange@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=andi@firstfloor.org \
    --cc=david@fromorbit.com \
    --cc=gthelen@google.com \
    --cc=hch@infradead.org \
    --cc=hughd@google.com \
    --cc=jack@suse.cz \
    --cc=klamm@yandex-team.ru \
    --cc=kosaki.motohiro@jp.fujitsu.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=metin@citusdata.com \
    --cc=mgorman@suse.de \
    --cc=minchan.kim@gmail.com \
    --cc=ozgun@citusdata.com \
    --cc=peterz@infradead.org \
    --cc=riel@redhat.com \
    --cc=sjenning@linux.vnet.ibm.com \
    --cc=tj@kernel.org \
    --cc=vbabka@suse.cz \
    --cc=walken@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.