Hi,

On 30.07.2020 18:02, Andrey Ryabinin wrote:
Exceeding cache above cache.limit_in_bytes schedules high_work_func()
which tries to reclaim 32 pages. If cache generated fast enough or it allows
cgroup to steadily grow above cache.limit_in_bytes because we don't reclaim
enough. Try to reclaim exceeded amount of cache instead.

https://jira.sw.ru/browse/PSBM-106384
Signed-off-by: Andrey Ryabinin <aryabi...@virtuozzo.com>
---

  - Changes since v1: add bug link to changelog
  - Changes since v2: Fix cache_overused check (We should check if it's 
positive).
     Made this stupid bug during cleanup, patch was tested without bogus 
cleanup,
     so it shoud work.
  - Chnages since v3: Compilation fixes, properly tested now.

  mm/memcontrol.c | 10 +++++++---
  1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/mm/memcontrol.c b/mm/memcontrol.c
index 3cf200f506c3..16cbd451a588 100644
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -3080,12 +3080,16 @@ static void reclaim_high(struct mem_cgroup *memcg,
  {
do {
+               long cache_overused;
+
                if (page_counter_read(&memcg->memory) > memcg->high)
                        try_to_free_mem_cgroup_pages(memcg, nr_pages, gfp_mask, 
0);
- if (page_counter_read(&memcg->cache) > memcg->cache.limit)
-                       try_to_free_mem_cgroup_pages(memcg, nr_pages, gfp_mask,
-                                               MEM_CGROUP_RECLAIM_NOSWAP);
+               cache_overused = page_counter_read(&memcg->cache) -
+                       memcg->cache.limit;

If cache_overused is less than 32 pages, the kernel would try to reclaim less than before the patch. It it OK, or should it try to reclaim at least 32 pages?

+               if (cache_overused > 0)
+                       try_to_free_mem_cgroup_pages(memcg, cache_overused,
+                                       gfp_mask, MEM_CGROUP_RECLAIM_NOSWAP);
} while ((memcg = parent_mem_cgroup(memcg)));
  }


_______________________________________________
Devel mailing list
Devel@openvz.org
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to