From: Johannes Weiner <hannes@cmpxchg.org>
To: Nico Pache <npache@redhat.com>
Cc: linux-mm@kvack.org, akpm@linux-foundation.org,
linux-kernel@vger.kernel.org, aquini@redhat.com,
shakeelb@google.com, llong@redhat.com, mhocko@suse.com,
hakavlad@inbox.lv
Subject: Re: [PATCH v3] vm_swappiness=0 should still try to avoid swapping anon memory
Date: Tue, 19 Apr 2022 14:46:43 -0400 [thread overview]
Message-ID: <Yl8Dk+a1YDwupLMv@cmpxchg.org> (raw)
In-Reply-To: <b5575449-08a2-2901-e7e1-a97150e4878c@redhat.com>
Hi Nico,
On Tue, Apr 19, 2022 at 02:11:53PM -0400, Nico Pache wrote:
> I think its is important to note the issue we are seeing has greatly improved
> since the initial posting. However we have noticed that the issue is still
> present (and significantly worse) when cgroupV1 is set.
>
> We were initially testing with CgroupV1 and later found that the issue was not
> as bad in CgroupV2 (but was still an noticeable issue). This is also resulting
> in the splitting of THPs in the host kernel.
When swappiness is 0, cgroup limit reclaim has a fixed SCAN_FILE
branch, so it shouldn't ever look at anon. I'm assuming you're getting
global reclaim mixed in. Indeed, I think we can try harder not to swap
for global reclaim if the user asks for that.
Can you try the below patch?
diff --git a/mm/vmscan.c b/mm/vmscan.c
index ba19edbc2452..0aa929151386 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -2729,11 +2729,9 @@ static void get_scan_count(struct lruvec *lruvec, struct scan_control *sc,
}
/*
- * Global reclaim will swap to prevent OOM even with no
- * swappiness, but memcg users want to use this knob to
- * disable swapping for individual groups completely when
- * using the memory controller's swap limit feature would be
- * too expensive.
+ * For cgroups, swappiness=0 means never swap. Historically,
+ * cgroup users have relied on this as it was cheaper than
+ * setting a swap limit of 0.
*/
if (cgroup_reclaim(sc) && !swappiness) {
scan_balance = SCAN_FILE;
@@ -2754,7 +2752,7 @@ static void get_scan_count(struct lruvec *lruvec, struct scan_control *sc,
* If the system is almost out of file pages, force-scan anon.
*/
if (sc->file_is_tiny) {
- scan_balance = SCAN_ANON;
+ scan_balance = SCAN_EQUAL;
goto out;
}
@@ -2767,6 +2765,12 @@ static void get_scan_count(struct lruvec *lruvec, struct scan_control *sc,
goto out;
}
+ /* swappiness=0 means no swap until OOM is imminent */
+ if (!swappiness && sc->priority) {
+ scan_balance = SCAN_FILE;
+ goto out;
+ }
+
scan_balance = SCAN_FRACT;
/*
* Calculate the pressure balance between anon and file pages.
next prev parent reply other threads:[~2022-04-19 18:46 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-08-09 22:37 [PATCH v3] vm_swappiness=0 should still try to avoid swapping anon memory Nico Pache
2021-08-10 15:27 ` Johannes Weiner
2021-08-10 19:24 ` Nico Pache
2021-08-10 21:17 ` Shakeel Butt
2021-08-10 22:16 ` Nico Pache
2021-08-10 22:29 ` Shakeel Butt
2021-08-10 21:16 ` Shakeel Butt
2021-08-10 15:37 ` Waiman Long
2022-04-19 18:11 ` Nico Pache
2022-04-19 18:46 ` Johannes Weiner [this message]
2022-04-19 19:37 ` Nico Pache
2022-04-19 23:54 ` Nico Pache
2022-04-20 14:01 ` Johannes Weiner
2022-04-20 17:34 ` Nico Pache
2022-04-20 18:44 ` Johannes Weiner
2022-04-21 16:21 ` Nico Pache
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=Yl8Dk+a1YDwupLMv@cmpxchg.org \
--to=hannes@cmpxchg.org \
--cc=akpm@linux-foundation.org \
--cc=aquini@redhat.com \
--cc=hakavlad@inbox.lv \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=llong@redhat.com \
--cc=mhocko@suse.com \
--cc=npache@redhat.com \
--cc=shakeelb@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.