linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Vlastimil Babka <vbabka@suse.cz>
To: Yu Zhao <yuzhao@google.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Johannes Weiner <hannes@cmpxchg.org>,
	Joonsoo Kim <iamjoonsoo.kim@lge.com>
Cc: linux-mm@kvack.org
Subject: Re: [PATCH] mm: don't SetPageWorkingset unconditionally during swapin
Date: Wed, 9 Dec 2020 10:18:22 +0100	[thread overview]
Message-ID: <805d0032-4f73-cdb8-758a-1c1c1fb73f4c@suse.cz> (raw)
In-Reply-To: <20201209012400.1771150-1-yuzhao@google.com>

On 12/9/20 2:24 AM, Yu Zhao wrote:
> We are capable of SetPageWorkingset based on refault distances after
> commit aae466b0052e ("mm/swap: implement workingset detection for anonymous LRU")
> This is done by workingset_refault(), which is right above the
> unconditional SetPageWorkingset deleted by this patch.
> 
> The unconditional SetPageWorkingset miscategorizes pages that are
> read ahead or never belonged to the working set (e.g., tmpfs pages
> accessed by fd). When those pages are swapped in (after they were
> swapped out) for the first time, they skew PSI (when using
> async swap). When this happens again, depending on their refault
> distances, they might skew workingset_restore_anon counter in
> addition to PSI because their shadows say they were part of the
> working set.
> 
> Signed-off-by: Yu Zhao <yuzhao@google.com>

Acked-by: Vlastimil Babka <vbabka@suse.cz>

Makes sense, especially now that we have anonymous LRU support. The flag setting
in this context seems to go back all the way to 1899ad18c607 ("mm: workingset:
tell cache transitions from workingset thrashing") where I'm not sure why it was
even used on the anonymous page, when workingset was only implemented for the
page cache. Maybe Johannes remembers?

> ---
>  mm/swap_state.c | 1 -
>  1 file changed, 1 deletion(-)
> 
> diff --git a/mm/swap_state.c b/mm/swap_state.c
> index 1a01235156d1..6ecc84448d75 100644
> --- a/mm/swap_state.c
> +++ b/mm/swap_state.c
> @@ -536,7 +536,6 @@ struct page *__read_swap_cache_async(swp_entry_t entry, gfp_t gfp_mask,
>  		workingset_refault(page, shadow);
>  
>  	/* Caller will initiate read into locked page */
> -	SetPageWorkingset(page);
>  	lru_cache_add(page);
>  	*new_page_allocated = true;
>  	return page;
> 



  reply	other threads:[~2020-12-09  9:18 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-12-09  1:24 [PATCH] mm: don't SetPageWorkingset unconditionally during swapin Yu Zhao
2020-12-09  9:18 ` Vlastimil Babka [this message]
2020-12-10 11:21   ` Johannes Weiner
2020-12-10 22:44     ` Yu Zhao
2020-12-14 16:09     ` Michal Hocko
2020-12-14 23:12       ` [PATCH] mm/swap: " Yu Zhao
2020-12-10 10:47 ` [PATCH] mm: " Johannes Weiner
2020-12-10 12:06 ` Joonsoo 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=805d0032-4f73-cdb8-758a-1c1c1fb73f4c@suse.cz \
    --to=vbabka@suse.cz \
    --cc=akpm@linux-foundation.org \
    --cc=hannes@cmpxchg.org \
    --cc=iamjoonsoo.kim@lge.com \
    --cc=linux-mm@kvack.org \
    --cc=yuzhao@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).