All of lore.kernel.org
 help / color / mirror / Atom feed
From: Huang Ying <ying.huang@intel.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"Huang, Ying" <ying.huang@intel.com>,
	Yang Shi <shy828301@gmail.com>, Greg Thelen <gthelen@google.com>,
	Michal Hocko <mhocko@suse.com>, Wei Xu <weixugc@google.com>,
	Oscar Salvador <osalvador@suse.de>, Zi Yan <ziy@nvidia.com>,
	David Rientjes <rientjes@google.com>,
	Dan Williams <dan.j.williams@intel.com>,
	David Hildenbrand <david@redhat.com>,
	Keith Busch <kbusch@kernel.org>,
	Yang Shi <yang.shi@linux.alibaba.com>
Subject: [PATCH -V11 6/9] mm/vmscan: add helper for querying ability to age anonymous pages
Date: Wed, 21 Jul 2021 14:39:23 +0800	[thread overview]
Message-ID: <20210721063926.3024591-6-ying.huang@intel.com> (raw)
In-Reply-To: <20210721063926.3024591-1-ying.huang@intel.com>

From: Dave Hansen <dave.hansen@linux.intel.com>

Anonymous pages are kept on their own LRU(s).  These lists could
theoretically always be scanned and maintained.  But, without swap, there
is currently nothing the kernel can *do* with the results of a scanned,
sorted LRU for anonymous pages.

A check for '!total_swap_pages' currently serves as a valid check as to
whether anonymous LRUs should be maintained.  However, another method will
be added shortly: page demotion.

Abstract out the 'total_swap_pages' checks into a helper, give it a
logically significant name, and check for the possibility of page
demotion.

Link: https://lkml.kernel.org/r/20210715055145.195411-7-ying.huang@intel.com
Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
Signed-off-by: "Huang, Ying" <ying.huang@intel.com>
Reviewed-by: Yang Shi <shy828301@gmail.com>
Reviewed-by: Greg Thelen <gthelen@google.com>
Cc: Michal Hocko <mhocko@suse.com>
Cc: Wei Xu <weixugc@google.com>
Cc: Oscar Salvador <osalvador@suse.de>
Cc: Zi Yan <ziy@nvidia.com>
Cc: David Rientjes <rientjes@google.com>
Cc: Dan Williams <dan.j.williams@intel.com>
Cc: David Hildenbrand <david@redhat.com>
Cc: Keith Busch <kbusch@kernel.org>
Cc: Yang Shi <yang.shi@linux.alibaba.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
 mm/vmscan.c | 20 ++++++++++++++++++--
 1 file changed, 18 insertions(+), 2 deletions(-)

diff --git a/mm/vmscan.c b/mm/vmscan.c
index 90fa026cfa29..d79bf91700de 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -2729,6 +2729,21 @@ static void get_scan_count(struct lruvec *lruvec, struct scan_control *sc,
 	}
 }
 
+/*
+ * Anonymous LRU management is a waste if there is
+ * ultimately no way to reclaim the memory.
+ */
+static bool can_age_anon_pages(struct pglist_data *pgdat,
+			       struct scan_control *sc)
+{
+	/* Aging the anon LRU is valuable if swap is present: */
+	if (total_swap_pages > 0)
+		return true;
+
+	/* Also valuable if anon pages can be demoted: */
+	return can_demote(pgdat->node_id, sc);
+}
+
 static void shrink_lruvec(struct lruvec *lruvec, struct scan_control *sc)
 {
 	unsigned long nr[NR_LRU_LISTS];
@@ -2838,7 +2853,8 @@ static void shrink_lruvec(struct lruvec *lruvec, struct scan_control *sc)
 	 * Even if we did not try to evict anon pages at all, we want to
 	 * rebalance the anon lru active/inactive ratio.
 	 */
-	if (total_swap_pages && inactive_is_low(lruvec, LRU_INACTIVE_ANON))
+	if (can_age_anon_pages(lruvec_pgdat(lruvec), sc) &&
+	    inactive_is_low(lruvec, LRU_INACTIVE_ANON))
 		shrink_active_list(SWAP_CLUSTER_MAX, lruvec,
 				   sc, LRU_ACTIVE_ANON);
 }
@@ -3669,7 +3685,7 @@ static void age_active_anon(struct pglist_data *pgdat,
 	struct mem_cgroup *memcg;
 	struct lruvec *lruvec;
 
-	if (!total_swap_pages)
+	if (!can_age_anon_pages(pgdat, sc))
 		return;
 
 	lruvec = mem_cgroup_lruvec(NULL, pgdat);
-- 
2.30.2


  parent reply	other threads:[~2021-07-21  6:43 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-21  6:39 [PATCH -V11 1/9] mm/numa: automatically generate node migration order Huang Ying
2021-07-21  6:39 ` [PATCH -V11 2/9] mm/migrate: update node demotion order on hotplug events Huang Ying
2022-02-23 23:02   ` Abhishek Goel
2022-02-24  0:05     ` Dave Hansen
2022-02-24 23:37       ` Abhishek Goel
2022-02-25  0:49         ` Dave Hansen
2022-02-25  2:32         ` Huang, Ying
2022-02-25 20:35           ` Abhishek Goel
2022-03-08 10:27           ` Oscar Salvador
2022-03-08 17:07             ` Dave Hansen
2022-03-08 18:56               ` Oscar Salvador
2022-03-09  0:29                 ` Huang, Ying
2021-07-21  6:39 ` [PATCH -V11 3/9] mm/migrate: enable returning precise migrate_pages() success count Huang Ying
2021-07-21  6:39 ` [PATCH -V11 4/9] mm/migrate: demote pages during reclaim Huang Ying
2021-07-21 21:11   ` Zi Yan
2021-07-21  6:39 ` [PATCH -V11 5/9] mm/vmscan: add page demotion counter Huang Ying
2021-07-21 21:13   ` Zi Yan
2021-07-21  6:39 ` Huang Ying [this message]
2021-07-21 21:15   ` [PATCH -V11 6/9] mm/vmscan: add helper for querying ability to age anonymous pages Zi Yan
2021-07-21  6:39 ` [PATCH -V11 7/9] mm/vmscan: Consider anonymous pages without swap Huang Ying
2021-07-21 21:21   ` Zi Yan
2021-07-21  6:39 ` [PATCH -V11 8/9] mm/vmscan: never demote for memcg reclaim Huang Ying
2021-07-21 21:38   ` Zi Yan
2021-07-21 21:58     ` Dave Hansen
2021-07-21 21:59       ` Zi Yan
2021-07-21 22:03       ` Yang Shi
2021-07-21 22:03         ` Yang Shi
2021-07-21  6:39 ` [PATCH -V11 9/9] mm/migrate: add sysfs interface to enable reclaim migration Huang Ying

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=20210721063926.3024591-6-ying.huang@intel.com \
    --to=ying.huang@intel.com \
    --cc=akpm@linux-foundation.org \
    --cc=dan.j.williams@intel.com \
    --cc=dave.hansen@linux.intel.com \
    --cc=david@redhat.com \
    --cc=gthelen@google.com \
    --cc=kbusch@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mhocko@suse.com \
    --cc=osalvador@suse.de \
    --cc=rientjes@google.com \
    --cc=shy828301@gmail.com \
    --cc=weixugc@google.com \
    --cc=yang.shi@linux.alibaba.com \
    --cc=ziy@nvidia.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.