lkml.org 
[lkml]   [2018]   [Aug]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH v1] mm:memcg: skip memcg of current in mem_cgroup_soft_limit_reclaim
Date
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@spreadtrum.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
\
 
 \ /
  Last update: 2018-08-03 07:48    [W:0.048 / U:0.864 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site