From: Yang Shi <yang.shi@linux.alibaba.com>
To: mhocko@suse.com, hannes@cmpxchg.org, shakeelb@google.com,
akpm@linux-foundation.org
Cc: yang.shi@linux.alibaba.com, linux-mm@kvack.org,
linux-kernel@vger.kernel.org
Subject: [v2 PATCH 2/5] mm: memcontrol: do not try to do swap when force empty
Date: Sat, 5 Jan 2019 08:19:17 +0800 [thread overview]
Message-ID: <1546647560-40026-3-git-send-email-yang.shi@linux.alibaba.com> (raw)
In-Reply-To: <1546647560-40026-1-git-send-email-yang.shi@linux.alibaba.com>
The typical usecase of force empty is to try to reclaim as much as
possible memory before offlining a memcg. Since there should be no
attached tasks to offlining memcg, the tasks anonymous pages would have
already been freed or uncharged. Even though anonymous pages get
swapped out, but they still get charged to swap space. So, it sounds
pointless to do swap for force empty.
I tried to dig into the history of this, it was introduced by
commit 8c7c6e34a125 ("memcg: mem+swap controller core"), but there is
not any clue about why it was done so at the first place.
The below simple test script shows slight file cache reclaim improvement
when swap is on.
echo 3 > /proc/sys/vm/drop_caches
mkdir /sys/fs/cgroup/memory/test
echo 30 > /sys/fs/cgroup/memory/test/memory.swappiness
echo $$ >/sys/fs/cgroup/memory/test/cgroup.procs
cat /proc/meminfo | grep ^Cached|awk -F" " '{print $2}'
dd if=/dev/zero of=/mnt/test bs=1M count=1024
ping localhost > /dev/null &
echo 1 > /sys/fs/cgroup/memory/test/memory.force_empty
killall ping
echo $$ >/sys/fs/cgroup/memory/cgroup.procs
cat /proc/meminfo | grep ^Cached|awk -F" " '{print $2}'
rmdir /sys/fs/cgroup/memory/test
cat /proc/meminfo | grep ^Cached|awk -F" " '{print $2}'
The number of page cache is:
w/o w/
before force empty 1088792 1088784
after force empty 41492 39428
reclaimed 1047300 1049356
Without doing swap, force empty can reclaim 2MB more memory in 1GB page
cache.
Cc: Michal Hocko <mhocko@suse.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Signed-off-by: Yang Shi <yang.shi@linux.alibaba.com>
---
mm/memcontrol.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/mm/memcontrol.c b/mm/memcontrol.c
index af7f18b..75208a2 100644
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -2895,7 +2895,7 @@ static int mem_cgroup_force_empty(struct mem_cgroup *memcg)
return -EINTR;
progress = try_to_free_mem_cgroup_pages(memcg, 1,
- GFP_KERNEL, true);
+ GFP_KERNEL, false);
if (!progress) {
nr_retries--;
/* maybe some writeback is necessary */
--
1.8.3.1
next prev parent reply other threads:[~2019-01-05 0:22 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-01-05 0:19 [RFC v2 PATCH 0/5] mm: memcontrol: do memory reclaim when offlining Yang Shi
2019-01-05 0:19 ` [v2 PATCH 1/5] doc: memcontrol: fix the obsolete content about force empty Yang Shi
2019-01-05 0:19 ` Yang Shi [this message]
2019-01-05 0:43 ` [v2 PATCH 2/5] mm: memcontrol: do not try to do swap when " Shakeel Butt
2019-01-09 17:55 ` Yang Shi
2019-01-05 0:19 ` [v2 PATCH 3/5] mm: memcontrol: introduce wipe_on_offline interface Yang Shi
2019-01-05 0:47 ` Shakeel Butt
2019-01-09 17:59 ` Yang Shi
2019-01-05 0:19 ` [v2 PATCH 4/5] mm: memcontrol: bring force_empty into default hierarchy Yang Shi
2019-01-05 0:19 ` [v2 PATCH 5/5] doc: memcontrol: add description for wipe_on_offline Yang Shi
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=1546647560-40026-3-git-send-email-yang.shi@linux.alibaba.com \
--to=yang.shi@linux.alibaba.com \
--cc=akpm@linux-foundation.org \
--cc=hannes@cmpxchg.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mhocko@suse.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 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).