All of lore.kernel.org
 help / color / mirror / Atom feed
From: Aaron Lu <aaron.lwe@gmail.com>
To: Joonsoo Kim <js1304@gmail.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	linux-mm@kvack.org, linux-kernel@vger.kernel.org,
	Michal Hocko <mhocko@kernel.org>, Hugh Dickins <hughd@google.com>,
	Minchan Kim <minchan@kernel.org>,
	Vlastimil Babka <vbabka@suse.cz>,
	Mel Gorman <mgorman@techsingularity.net>,
	kernel-team@lge.com, Huang Ying <ying.huang@intel.com>
Subject: Re: [PATCH v2 0/9] workingset protection/detection on the anonymous LRU list
Date: Fri, 28 Feb 2020 17:17:00 +0800	[thread overview]
Message-ID: <20200228091700.GA675567@ziqianlu-desktop.localdomain> (raw)
In-Reply-To: <20200228065214.GA17349@js1304-desktop>

On Fri, Feb 28, 2020 at 03:52:59PM +0900, Joonsoo Kim wrote:
> On Fri, Feb 28, 2020 at 01:57:26PM +0800, Aaron Lu wrote:
> > On Fri, Feb 28, 2020 at 01:03:03PM +0900, Joonsoo Kim wrote:
> > > Hello,
> > > 
> > > On Fri, Feb 28, 2020 at 11:23:58AM +0800, Aaron Lu wrote:
> > > > On Thu, Feb 27, 2020 at 08:48:06AM -0500, Johannes Weiner wrote:
> > > > > On Wed, Feb 26, 2020 at 07:39:42PM -0800, Andrew Morton wrote:
> > > > > > It sounds like the above simple aging changes provide most of the
> > > > > > improvement, and that the workingset changes are less beneficial and a
> > > > > > bit more risky/speculative?
> > > > > > 
> > > > > > If so, would it be best for us to concentrate on the aging changes
> > > > > > first, let that settle in and spread out and then turn attention to the
> > > > > > workingset changes?
> > > > > 
> > > > > Those two patches work well for some workloads (like the benchmark),
> > > > > but not for others. The full patchset makes sure both types work well.
> > > > > 
> > > > > Specifically, the existing aging strategy for anon assumes that most
> > > > > anon pages allocated are hot. That's why they all start active and we
> > > > > then do second-chance with the small inactive LRU to filter out the
> > > > > few cold ones to swap out. This is true for many common workloads.
> > > > > 
> > > > > The benchmark creates a larger-than-memory set of anon pages with a
> > > > > flat access profile - to the VM a flood of one-off pages. Joonsoo's
> > > > 
> > > > test: swap-w-rand-mt, which is a multi thread swap write intensive
> > > > workload so there will be swap out and swap ins.
> > > > 
> > > > > first two patches allow the VM to usher those pages in and out of
> > > > 
> > > > Weird part is, the robot says the performance gain comes from the 1st
> > > > patch only, which adjust the ratio, not including the 2nd patch which
> > > > makes anon page starting from inactive list.
> > > > 
> > > > I find the performance gain hard to explain...
> > > 
> > > Let me explain the reason of the performance gain.
> > > 
> > > 1st patch provides more second chance to the anonymous pages.
> > 
> > By second chance, do I understand correctely this refers to pages on 
> > inactive list get moved back to active list?
> 
> Yes.
> 
> > 
> > > In swap-w-rand-mt test, memory used by all threads is greater than the
> > > amount of the system memory, but, memory used by each thread would
> > > not be much. So, although it is a rand test, there is a locality
> > > in each thread's job. More second chance helps to exploit this
> > > locality so performance could be improved.
> > 
> > Does this mean there should be fewer vmstat.pswpout and vmstat.pswpin
> > with patch1 compared to vanilla?
> 
> It depends on the workload. If the workload consists of anonymous

This swap-rand-w-mt workload is anon only.

> pages only, I think, yes, pswpout/pswpin would be lower than vanilla

I think LKP robot has captured these two metrics but the report didn't
show them, which means the number is about the same with or without
patch #1.

> with patch #1. With large inactive list, we can easily find the
> frequently referenced page and it would result in less swap in/out.

But with small inactive list, the pages that would be on inactive list
will stay on active list? I think the larger inactive list is mainly
used to give the anon page a chance to be promoted to active list now
that anon pages land on inactive list first, but on reclaim, I don't see
how a larger inactive list can cause fewer swap outs.

Forgive me for my curiosity and feel free to ignore my question as I
don't want to waste your time on this. Your patchset looks a worthwhile
thing to do, it's just the robot's report on patch1 seems er...

  reply	other threads:[~2020-02-28  9:17 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-20  5:11 [PATCH v2 0/9] workingset protection/detection on the anonymous LRU list js1304
2020-02-20  5:11 ` [PATCH v2 1/9] mm/vmscan: make active/inactive ratio as 1:1 for anon lru js1304
2020-03-12 14:47   ` Johannes Weiner
2020-03-13  5:48     ` Joonsoo Kim
2020-03-13  5:48       ` Joonsoo Kim
2020-02-20  5:11 ` [PATCH v2 2/9] mm/vmscan: protect the workingset on anonymous LRU js1304
2020-03-12 15:14   ` Johannes Weiner
2020-03-13  7:40     ` Joonsoo Kim
2020-03-13  7:40       ` Joonsoo Kim
2020-03-13 19:55       ` Johannes Weiner
2020-03-16  7:05         ` Joonsoo Kim
2020-03-16  7:05           ` Joonsoo Kim
2020-03-16 16:12           ` Johannes Weiner
2020-03-17  4:52             ` Joonsoo Kim
2020-03-17  4:52               ` Joonsoo Kim
2020-02-20  5:11 ` [PATCH v2 3/9] mm/workingset: extend the workingset detection for anon LRU js1304
2020-02-20  5:11 ` [PATCH v2 4/9] mm/swapcache: support to handle the value in swapcache js1304
2020-02-20  5:11 ` [PATCH v2 5/9] mm/workingset: use the node counter if memcg is the root memcg js1304
2020-02-20  5:11 ` [PATCH v2 6/9] mm/workingset: handle the page without memcg js1304
2020-02-20  5:11 ` [PATCH v2 7/9] mm/swap: implement workingset detection for anonymous LRU js1304
2020-02-20  5:11 ` [PATCH v2 8/9] mm/vmscan: restore active/inactive ratio " js1304
2020-02-20  5:11 ` [PATCH v2 9/9] mm/swap: count a new anonymous page as a reclaim_state's rotate js1304
2020-02-27  3:39 ` [PATCH v2 0/9] workingset protection/detection on the anonymous LRU list Andrew Morton
2020-02-27  7:48   ` Joonsoo Kim
2020-03-01  4:40     ` Andrew Morton
2020-02-27 13:48   ` Johannes Weiner
2020-02-27 23:36     ` Andrew Morton
2020-03-02 23:31       ` Joonsoo Kim
2020-03-02 23:31         ` Joonsoo Kim
2020-03-11  7:27         ` Joonsoo Kim
2020-03-11  7:27           ` Joonsoo Kim
2020-02-28  3:23     ` Aaron Lu
2020-02-28  4:03       ` Joonsoo Kim
2020-02-28  5:57         ` Aaron Lu
2020-02-28  6:52           ` Joonsoo Kim
2020-02-28  9:17             ` Aaron Lu [this message]
2020-02-28  9:56               ` Joonsoo Kim
2020-02-28 10:21                 ` Aaron Lu

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=20200228091700.GA675567@ziqianlu-desktop.localdomain \
    --to=aaron.lwe@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=hannes@cmpxchg.org \
    --cc=hughd@google.com \
    --cc=js1304@gmail.com \
    --cc=kernel-team@lge.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mgorman@techsingularity.net \
    --cc=mhocko@kernel.org \
    --cc=minchan@kernel.org \
    --cc=vbabka@suse.cz \
    --cc=ying.huang@intel.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.