Andrey,
could you please clarify, is it required for vz8 too?

On 10/5/20 4:21 PM, Andrey Ryabinin wrote:
> __alloc_pages_slowpath relies on the direct reclaim and did_some_progress
> as an indicator that it makes sense to retry allocation rather than
> declaring OOM. shrink_zones checks if all zones reclaimable and if
> shrink_zone didn't make any progress it prevents from a premature OOM
> killer invocation by reporting the progress.
> This might happen if the LRU is full of dirty or writeback pages
> and direct reclaim cannot clean those up.
> 
> zone_reclaimable allows to rescan the reclaimable lists several times
> and restart if a page is freed.  This is really subtle behavior and it
> might lead to a livelock when a single freed page keeps allocator
> looping but the current task will not be able to allocate that single
> page.  OOM killer would be more appropriate than looping without any
> progress for unbounded amount of time.
> 
> Report no progress even if zones are reclaimable as OOM is more appropiate
> in that case.
> 
> https://jira.sw.ru/browse/PSBM-104900
> Signed-off-by: Andrey Ryabinin <aryabi...@virtuozzo.com>
> ---
>  mm/vmscan.c | 24 ------------------------
>  1 file changed, 24 deletions(-)
> 
> diff --git a/mm/vmscan.c b/mm/vmscan.c
> index 13ae9bd1e92e..85622f235e78 100644
> --- a/mm/vmscan.c
> +++ b/mm/vmscan.c
> @@ -2952,26 +2952,6 @@ static void snapshot_refaults(struct mem_cgroup 
> *root_memcg, struct zone *zone)
>         } while ((memcg = mem_cgroup_iter(root_memcg, memcg, NULL)));
>  }
>  
> -/* All zones in zonelist are unreclaimable? */
> -static bool all_unreclaimable(struct zonelist *zonelist,
> -             struct scan_control *sc)
> -{
> -     struct zoneref *z;
> -     struct zone *zone;
> -
> -     for_each_zone_zonelist_nodemask(zone, z, zonelist,
> -                     gfp_zone(sc->gfp_mask), sc->nodemask) {
> -             if (!populated_zone(zone))
> -                     continue;
> -             if (!cpuset_zone_allowed_hardwall(zone, GFP_KERNEL))
> -                     continue;
> -             if (zone_reclaimable(zone))
> -                     return false;
> -     }
> -
> -     return true;
> -}
> -
>  static void shrink_tcrutches(struct scan_control *scan_ctrl)
>  {
>       int nid;
> @@ -3097,10 +3077,6 @@ out:
>               goto retry;
>       }
>  
> -     /* top priority shrink_zones still had more to do? don't OOM, then */
> -     if (global_reclaim(sc) && !all_unreclaimable(zonelist, sc))
> -             return 1;
> -
>       return 0;
>  }
>  
> 
_______________________________________________
Devel mailing list
Devel@openvz.org
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to