Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1570498

[PATCH 1/2 v3] mm: vmscan: do not pass reclaimed slab to vmpressure

From Vinayak Menon <vinmenon@codeaurora.org>
Newsgroups linux.kernel
Subject [PATCH 1/2 v3] mm: vmscan: do not pass reclaimed slab to vmpressure
Date 2017-01-31 10:10 +0100
Message-ID <t5CBP-7j5-13@gated-at.bofh.it> (permalink)
References <t49Vg-1J9-7@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


During global reclaim, the nr_reclaimed passed to vmpressure
includes the pages reclaimed from slab. But the corresponding
scanned slab pages is not passed. This can cause total reclaimed
pages to be greater than scanned, causing an unsigned underflow
in vmpressure resulting in a critical event being sent to root
cgroup. So do not consider reclaimed slab pages for vmpressure
calculation. The reclaimed pages from slab can be excluded because
the freeing of a page by slab shrinking depends on each slab's
object population, making the cost model (i.e. scan:free) different
from that of LRU. Also, not every shrinker accounts the pages it
reclaims. This is a regression introduced by commit 6b4f7799c6a5
("mm: vmscan: invoke slab shrinkers from shrink_zone()").

Signed-off-by: Vinayak Menon <vinmenon@codeaurora.org>
---
 mm/vmscan.c | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

diff --git a/mm/vmscan.c b/mm/vmscan.c
index 947ab6f..8969f8e 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -2594,16 +2594,23 @@ static bool shrink_node(pg_data_t *pgdat, struct scan_control *sc)
 				    sc->nr_scanned - nr_scanned,
 				    node_lru_pages);
 
+		/*
+		 * Record the subtree's reclaim efficiency. The reclaimed
+		 * pages from slab is excluded here because the corresponding
+		 * scanned pages is not accounted. Moreover, freeing a page
+		 * by slab shrinking depends on each slab's object population,
+		 * making the cost model (i.e. scan:free) different from that
+		 * of LRU.
+		 */
+		vmpressure(sc->gfp_mask, sc->target_mem_cgroup, true,
+			   sc->nr_scanned - nr_scanned,
+			   sc->nr_reclaimed - nr_reclaimed);
+
 		if (reclaim_state) {
 			sc->nr_reclaimed += reclaim_state->reclaimed_slab;
 			reclaim_state->reclaimed_slab = 0;
 		}
 
-		/* Record the subtree's reclaim efficiency */
-		vmpressure(sc->gfp_mask, sc->target_mem_cgroup, true,
-			   sc->nr_scanned - nr_scanned,
-			   sc->nr_reclaimed - nr_reclaimed);
-
 		if (sc->nr_reclaimed - nr_reclaimed)
 			reclaimable = true;
 
-- 
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a
member of the Code Aurora Forum, hosted by The Linux Foundation

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH 1/2 v2] mm: vmscan: do not pass reclaimed slab to vmpressure Vinayak Menon <vinmenon@codeaurora.org> - 2017-01-27 09:20 +0100
  [PATCH 2/2] mm: vmpressure: fix sending wrong events on underflow Vinayak Menon <vinmenon@codeaurora.org> - 2017-01-27 09:20 +0100
    Re: [PATCH 2/2] mm: vmpressure: fix sending wrong events on underflow Minchan Kim <minchan@kernel.org> - 2017-01-31 01:10 +0100
  Re: [PATCH 1/2 v2] mm: vmscan: do not pass reclaimed slab to  vmpressure Minchan Kim <minchan@kernel.org> - 2017-01-31 01:00 +0100
    Re: [PATCH 1/2 v2] mm: vmscan: do not pass reclaimed slab to vmpressure vinayak menon <vinayakm.list@gmail.com> - 2017-01-31 08:50 +0100
  [PATCH 1/2 v3] mm: vmscan: do not pass reclaimed slab to vmpressure Vinayak Menon <vinmenon@codeaurora.org> - 2017-01-31 10:10 +0100
    Re: [PATCH 1/2 v3] mm: vmscan: do not pass reclaimed slab to  vmpressure Minchan Kim <minchan@kernel.org> - 2017-02-01 07:20 +0100
    Re: [PATCH 1/2 v3] mm: vmscan: do not pass reclaimed slab to  vmpressure Michal Hocko <mhocko@kernel.org> - 2017-02-02 11:50 +0100
      Re: [PATCH 1/2 v3] mm: vmscan: do not pass reclaimed slab to  vmpressure Michal Hocko <mhocko@kernel.org> - 2017-02-02 11:50 +0100
        Re: [PATCH 1/2 v3] mm: vmscan: do not pass reclaimed slab to vmpressure vinayak menon <vinayakm.list@gmail.com> - 2017-02-02 12:30 +0100
          Re: [PATCH 1/2 v3] mm: vmscan: do not pass reclaimed slab to  vmpressure Michal Hocko <mhocko@kernel.org> - 2017-02-02 13:00 +0100
            Re: [PATCH 1/2 v3] mm: vmscan: do not pass reclaimed slab to vmpressure vinayak menon <vinayakm.list@gmail.com> - 2017-02-02 16:40 +0100
              Re: [PATCH 1/2 v3] mm: vmscan: do not pass reclaimed slab to  vmpressure Michal Hocko <mhocko@kernel.org> - 2017-02-02 17:10 +0100
                Re: [PATCH 1/2 v3] mm: vmscan: do not pass reclaimed slab to vmpressure vinayak menon <vinayakm.list@gmail.com> - 2017-02-03 06:30 +0100
                Re: [PATCH 1/2 v3] mm: vmscan: do not pass reclaimed slab to  vmpressure Michal Hocko <mhocko@kernel.org> - 2017-02-03 16:10 +0100
                Re: [PATCH 1/2 v3] mm: vmscan: do not pass reclaimed slab to vmpressure vinayak menon <vinayakm.list@gmail.com> - 2017-02-06 12:40 +0100
      Re: [PATCH 1/2 v3] mm: vmscan: do not pass reclaimed slab to vmpressure vinayak menon <vinayakm.list@gmail.com> - 2017-02-02 12:30 +0100
      Re: [PATCH 1/2 v3] mm: vmscan: do not pass reclaimed slab to  vmpressure Minchan Kim <minchan@kernel.org> - 2017-02-03 07:20 +0100

csiph-web