[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <1533275285-12387-1-git-send-email-zhaoyang.huang@spreadtrum.com>
Date: Fri, 3 Aug 2018 13:48:05 +0800
From: Zhaoyang Huang <huangzhaoyang@...il.com>
To: Steven Rostedt <rostedt@...dmis.org>,
Ingo Molnar <mingo@...nel.org>,
Johannes Weiner <hannes@...xchg.org>,
Michal Hocko <mhocko@...nel.org>,
Vladimir Davydov <vdavydov.dev@...il.com>, linux-mm@...ck.org,
cgroups@...r.kernel.org, linux-kernel@...r.kernel.org,
kernel-patch-test@...ts.linaro.org
Subject: [PATCH v1] mm:memcg: skip memcg of current in mem_cgroup_soft_limit_reclaim
for the soft_limit reclaim has more directivity than global reclaim, we
have current memcg be skipped to avoid potential page thrashing.
Signed-off-by: Zhaoyang Huang <zhaoyang.huang@...eadtrum.com>
---
mm/memcontrol.c | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/mm/memcontrol.c b/mm/memcontrol.c
index 8c0280b..9d09e95 100644
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -2537,12 +2537,21 @@ unsigned long mem_cgroup_soft_limit_reclaim(pg_data_t *pgdat, int order,
mz = mem_cgroup_largest_soft_limit_node(mctz);
if (!mz)
break;
-
+ /*
+ * skip current memcg to avoid page thrashing, for the
+ * mem_cgroup_soft_reclaim has more directivity than
+ * global reclaim.
+ */
+ if (get_mem_cgroup_from_mm(current->mm) == mz->memcg) {
+ reclaimed = 0;
+ goto next;
+ }
nr_scanned = 0;
reclaimed = mem_cgroup_soft_reclaim(mz->memcg, pgdat,
gfp_mask, &nr_scanned);
nr_reclaimed += reclaimed;
*total_scanned += nr_scanned;
+next:
spin_lock_irq(&mctz->lock);
__mem_cgroup_remove_exceeded(mz, mctz);
--
1.9.1
Powered by blists - more mailing lists