[Devel] [PATCH RHEL8 COMMIT] ms/mm: vmscan: simplify lruvec_lru_size()

Konstantin Khorenko khorenko at virtuozzo.com
Thu Apr 2 16:02:51 MSK 2020


The commit is pushed to "branch-rh8-4.18.0-80.1.2.vz8.3.x-ovz" and will appear at https://src.openvz.org/scm/ovz/vzkernel.git
after rh8-4.18.0-80.1.2.vz8.3.4
------>
commit b024fb84397dabbc8f6377bef04edfce24323c5f
Author: Johannes Weiner <hannes at cmpxchg.org>
Date:   Thu Apr 2 16:02:51 2020 +0300

    ms/mm: vmscan: simplify lruvec_lru_size()
    
    Patch series "mm: vmscan: cgroup-related cleanups".
    
    Here are 8 patches that clean up the reclaim code's interaction with
    cgroups a bit. They're not supposed to change any behavior, just make
    the implementation easier to understand and work with.
    
    This patch (of 8):
    
    This function currently takes the node or lruvec size and subtracts the
    zones that are excluded by the classzone index of the allocation.  It uses
    four different types of counters to do this.
    
    Just add up the eligible zones.
    
    [cai at lca.pw: fix an undefined behavior for zone id]
      Link: http://lkml.kernel.org/r/20191108204407.1435-1-cai@lca.pw
    [akpm at linux-foundation.org: deal with the MAX_NR_ZONES special case. per Qian Cai]
      Link: http://lkml.kernel.org/r/64E60F6F-7582-427B-8DD5-EF97B1656F5A@lca.pw
    Link: http://lkml.kernel.org/r/20191022144803.302233-2-hannes@cmpxchg.org
    Signed-off-by: Johannes Weiner <hannes at cmpxchg.org>
    Reviewed-by: Roman Gushchin <guro at fb.com>
    Reviewed-by: Shakeel Butt <shakeelb at google.com>
    Acked-by: Michal Hocko <mhocko at suse.com>
    Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
    
    (cherry picked from commit de3b01506ea494b46aab05dc143b69adbf2aaa9d)
    Signed-off-by: Andrey Ryabinin <aryabinin at virtuozzo.com>
---
 mm/vmscan.c | 18 +++++-------------
 1 file changed, 5 insertions(+), 13 deletions(-)

diff --git a/mm/vmscan.c b/mm/vmscan.c
index 87286d30888b..6204c90703bf 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -273,30 +273,22 @@ unsigned long zone_reclaimable_pages(struct zone *zone)
  */
 unsigned long lruvec_lru_size(struct lruvec *lruvec, enum lru_list lru, int zone_idx)
 {
-	unsigned long lru_size;
+	unsigned long size = 0;
 	int zid;
 
-	if (!mem_cgroup_disabled())
-		lru_size = mem_cgroup_get_lru_size(lruvec, lru);
-	else
-		lru_size = node_page_state(lruvec_pgdat(lruvec), NR_LRU_BASE + lru);
-
-	for (zid = zone_idx + 1; zid < MAX_NR_ZONES; zid++) {
+	for (zid = 0; zid <= zone_idx && zid < MAX_NR_ZONES; zid++) {
 		struct zone *zone = &lruvec_pgdat(lruvec)->node_zones[zid];
-		unsigned long size;
 
 		if (!managed_zone(zone))
 			continue;
 
 		if (!mem_cgroup_disabled())
-			size = mem_cgroup_get_zone_lru_size(lruvec, lru, zid);
+			size += mem_cgroup_get_zone_lru_size(lruvec, lru, zid);
 		else
-			size = zone_page_state(&lruvec_pgdat(lruvec)->node_zones[zid],
-				       NR_ZONE_LRU_BASE + lru);
-		lru_size -= min(size, lru_size);
+			size += zone_page_state(zone, NR_ZONE_LRU_BASE + lru);
 	}
 
-	return lru_size;
+	return size;
 
 }
 


More information about the Devel mailing list