[Devel] [PATCH RHEL7 COMMIT] mm/memcontrol: warn about leaking memory on reparenting after 100 attempts

Konstantin Khorenko khorenko at virtuozzo.com
Mon Jul 8 12:23:44 MSK 2019


The commit is pushed to "branch-rh7-3.10.0-957.21.3.vz7.106.x-ovz" and will appear at https://src.openvz.org/scm/ovz/vzkernel.git
after rh7-3.10.0-957.21.3.vz7.106.5
------>
commit 73bad91e8fc2297423a1c886ec81079a11bc8c7a
Author: Konstantin Khorenko <khorenko at virtuozzo.com>
Date:   Mon Jul 1 15:58:15 2019 +0300

    mm/memcontrol: warn about leaking memory on reparenting after 100 attempts
    
    We know that 1 iteration could be not enough for complete reparenting of
    memcg, so warn in case we don't succeed in 100 iterations.
    If we ever see this warning, we better get rid of reparenting at all as
    it is planned in https://jira.sw.ru/browse/PSBM-94117.
    
    Fixes: e548e343c40b ("mm/memcontrol: don't reparent forever if
    counter leaked.")
    
    https://jira.sw.ru/browse/PSBM-96003
    https://pmc.acronis.com/browse/VSTOR-24241
    
    Signed-off-by: Konstantin Khorenko <khorenko at virtuozzo.com>
---
 mm/memcontrol.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/mm/memcontrol.c b/mm/memcontrol.c
index edc6bebc1f34..8ead76b97079 100644
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -4291,7 +4291,7 @@ static void mem_cgroup_reparent_charges(struct mem_cgroup *memcg)
 {
 	int node, zid;
 	/* Protection from leaked memcg->memory counter. */
-	int reparent_attempts = 10;
+	int reparent_attempts = 99;
 
 	do {
 		/* This is for making all *used* pages to be on LRU. */
@@ -4325,6 +4325,14 @@ static void mem_cgroup_reparent_charges(struct mem_cgroup *memcg)
 		 */
 	} while ((page_counter_read(&memcg->memory) -
 		 page_counter_read(&memcg->kmem) > 0) && reparent_attempts--);
+
+	WARN_ONCE(!reparent_attempts,
+		  "memcg 0x%p leak suspected, performed %d iterations: "
+		  "memory=%lu, kmem=%lu",
+		  memcg,
+		  100,
+		  page_counter_read(&memcg->memory),
+		  page_counter_read(&memcg->kmem));
 }
 
 /*



More information about the Devel mailing list