Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933656AbdCKDlB (ORCPT ); Fri, 10 Mar 2017 22:41:01 -0500 Received: from mail-pf0-f175.google.com ([209.85.192.175]:35462 "EHLO mail-pf0-f175.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750935AbdCKDkx (ORCPT ); Fri, 10 Mar 2017 22:40:53 -0500 MIME-Version: 1.0 In-Reply-To: <1489198798-6632-1-git-send-email-ysxie@foxmail.com> References: <1489198798-6632-1-git-send-email-ysxie@foxmail.com> From: Shakeel Butt Date: Fri, 10 Mar 2017 19:40:51 -0800 Message-ID: Subject: Re: [PATCH RFC] mm/vmscan: donot retry shrink zones when memcg is disabled To: Yisheng Xie Cc: Andrew Morton , Johannes Weiner , Mel Gorman , Vlastimil Babka , Michal Hocko , riel@redhat.com, Linux MM , LKML , xieyisheng1@huawei.com Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1475 Lines: 41 On Fri, Mar 10, 2017 at 6:19 PM, Yisheng Xie wrote: > From: Yisheng Xie > > When we enter do_try_to_free_pages, the may_thrash is always clear, and > it will retry shrink zones to tap cgroup's reserves memory by setting > may_thrash when the former shrink_zones reclaim nothing. > > However, if CONFIG_MEMCG=n, it should not do this useless retry at all, > for we do not have any cgroup's reserves memory to tap, and we have > already done hard work and made no progress. > > Signed-off-by: Yisheng Xie > --- > mm/vmscan.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/mm/vmscan.c b/mm/vmscan.c > index bc8031e..b03ccc1 100644 > --- a/mm/vmscan.c > +++ b/mm/vmscan.c > @@ -2808,7 +2808,7 @@ static unsigned long do_try_to_free_pages(struct zonelist *zonelist, > return 1; > > /* Untapped cgroup reserves? Don't OOM, retry. */ > - if (!sc->may_thrash) { > + if (!sc->may_thrash && IS_ENABLED(CONFIG_MEMCG)) { In my opinion it should be even more restrictive (restricting cgroup_disabled=memory boot option and cgroup legacy hierarchy). So, instead of IS_ENABLED(CONFIG_MEMCG), the check should be something like (cgroup_subsys_enabled(memory_cgrp_subsys) && cgroup_subsys_on_dfl(memory_cgrp_subsys)). > sc->priority = initial_priority; > sc->may_thrash = 1; > goto retry; > -- > 1.9.1 > > >