From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 35A06C432BE for ; Wed, 1 Sep 2021 19:38:24 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id BB2536108B for ; Wed, 1 Sep 2021 19:38:23 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org BB2536108B Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=cmpxchg.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=kvack.org Received: by kanga.kvack.org (Postfix) id ED32F8D0002; Wed, 1 Sep 2021 15:38:22 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E81428D0001; Wed, 1 Sep 2021 15:38:22 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D983B8D0002; Wed, 1 Sep 2021 15:38:22 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0005.hostedemail.com [216.40.44.5]) by kanga.kvack.org (Postfix) with ESMTP id CB5BE8D0001 for ; Wed, 1 Sep 2021 15:38:22 -0400 (EDT) Received: from smtpin26.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay05.hostedemail.com (Postfix) with ESMTP id 8B7F8181E729F for ; Wed, 1 Sep 2021 19:38:22 +0000 (UTC) X-FDA: 78540016044.26.773A2E0 Received: from mail-qv1-f49.google.com (mail-qv1-f49.google.com [209.85.219.49]) by imf29.hostedemail.com (Postfix) with ESMTP id 161ED9000249 for ; Wed, 1 Sep 2021 19:38:21 +0000 (UTC) Received: by mail-qv1-f49.google.com with SMTP id 4so510586qvp.3 for ; Wed, 01 Sep 2021 12:38:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cmpxchg-org.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to; bh=Dxph7jDfwhIBjNqQGxaXPIRH+igFALi9zvpnJtxMvJI=; b=h5vuSLIWMVHLnRPsuMnItEcjoo6EhjfXlcfdEmLufhZVW1l90CkWqsQtEsbmyYAH1L VRdMz4MGMGSCLO6CQx+HG+Q1f8nYvkubXsqSNPwYWHrXRLGm2R2lZgEOKwYwkn+buTGZ aSKHkyq/wOuGsE6/ucgHH4cBS9ZIIg8o9Nt5TriLb7mddeC+qMRHYIk8Gh63pQp0Y6o7 vshYj3bLl7xH9s3CU3sF1mLKcDBT23jINs5Asf9/M935lJpLu2fkflTA5aEQRyXmwn8o 12xXAtDw2toaEEI6y+gVy/WUwdleMcSh9JLyTcxwIvQWdA1v6n9L2RJ7/CR+JXHgVtIf 7O+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to; bh=Dxph7jDfwhIBjNqQGxaXPIRH+igFALi9zvpnJtxMvJI=; b=BL80Qx0zlqrrRGQy9HiLm21obyTYUIiEG7tRyNCIvYqCaH2Ca2b531yj8g63qNPLOI 8b5CVidKeZjJfdEzFYHGxVqG/yKteuMK2hwuvCDZpPjStZUONwHDFZJp1svnyJmIBJ5s U2uPclXAyUM8jnRPlvIy9N4en+M7/Ymloy3cPaj/8fmOobJooy8F4xuElvH9mgP7ytW9 R4D/o2lIvavc6hjugZzYoH2JIHW1nOijHp0LN+Ib0A+II9yu+JHOhTZaKwfW2ZdxUvzg DmSVP4rtZpU0uUDC8TN6Foh9Lz+YeyiDbJ3Iq3m+ALygSwk2X2rU1RPxmbmVidInbTTS eHGg== X-Gm-Message-State: AOAM5321x5slHUkqD1Zqw9mSahORDmpgneC0kkeIzkZ0krXxNUar9rHi b++sonJucAl1kZKxH49TlUK4YA== X-Google-Smtp-Source: ABdhPJxEcd/IEZnsmVevnzzhpk4LBHFZUkU3kunOs4J3EV4EO6BJs7ize5brSSbHKBNFunPSnhetcw== X-Received: by 2002:ad4:4ab2:: with SMTP id i18mr973208qvx.44.1630525101359; Wed, 01 Sep 2021 12:38:21 -0700 (PDT) Received: from localhost (cpe-98-15-154-102.hvc.res.rr.com. [98.15.154.102]) by smtp.gmail.com with ESMTPSA id c2sm375373qkd.57.2021.09.01.12.38.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 01 Sep 2021 12:38:20 -0700 (PDT) Date: Wed, 1 Sep 2021 15:40:06 -0400 From: Johannes Weiner To: Rik van Riel Cc: Michal Hocko , Andrew Morton , linux-mm@kvack.org, linux-kernel@vger.kernel.org, kernel-team@fb.com, stable@kernel.org, Chris Down Subject: Re: [PATCH] mm,vmscan: fix divide by zero in get_scan_count Message-ID: References: <20210826220149.058089c6@imladris.surriel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline In-Reply-To: Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=cmpxchg-org.20150623.gappssmtp.com header.s=20150623 header.b=h5vuSLIW; dmarc=pass (policy=none) header.from=cmpxchg.org; spf=pass (imf29.hostedemail.com: domain of hannes@cmpxchg.org designates 209.85.219.49 as permitted sender) smtp.mailfrom=hannes@cmpxchg.org X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: 161ED9000249 X-Stat-Signature: 3s51n69u96up5t3sghi433mtwdxg9z6u X-HE-Tag: 1630525101-151921 Content-Transfer-Encoding: quoted-printable X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Tue, Aug 31, 2021 at 11:48:28AM -0400, Rik van Riel wrote: > On Tue, 2021-08-31 at 11:59 +0200, Michal Hocko wrote: > > On Mon 30-08-21 16:48:03, Johannes Weiner wrote: > >=20 > >=20 > > > Or go back to not taking the branch in the first place when there > > > is > > > no protection in effect... > > >=20 > > > diff --git a/mm/vmscan.c b/mm/vmscan.c > > > index 6247f6f4469a..9c200bb3ae51 100644 > > > --- a/mm/vmscan.c > > > +++ b/mm/vmscan.c > > > @@ -2547,7 +2547,7 @@ static void get_scan_count(struct lruvec > > > *lruvec, struct scan_control *sc, > > > =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0mem_cgroup_protecti= on(sc->target_mem_cgroup, memcg, > > > =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 &min, &low); > > > =A0 > > > -=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0if (min || low) { > > > +=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0if (min || (!sc->memc= g_low_reclaim && low)) { > > > =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0/* > > > =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0 * Scale a cgroup's reclaim pressure by > > > proportioning > > > =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0 * its current usage to its memory.low or > > > memory.min > >=20 > > This is slightly more complex to read but it is also better than +1 > > trick. >=20 > We could also fold it into the helper function, with > mem_cgroup_protection deciding whether to use low or > min for the protection limit, and then we key the rest > of our decisions off that. >=20 > Wait a minute, that's pretty much what mem_cgroup_protection > looked like before f56ce412a59d ("mm: memcontrol: fix occasional > OOMs due to proportional memory.low reclaim") >=20 > Now I'm confused how that changeset works. >=20 > Before f56ce412a59d, mem_cgroup_protection would return > memcg->memory.emin if sc->memcg_low_reclaim is true, and > memcg->memory.elow when not. >=20 > After f56ce412a59d, we still do the same thing. We just > also set sc->memcg_low_skipped so we know to come back > if we could not hit our target without skipping groups > with memory.low protection... Yeah, I just bubbled the sc->memcg_low_reclaim test up into vmscan.c so we can modify sc->memcg_low_skipped based on it. Because scan_control is vmscan.c-scope and I tried to retain that; and avoid doing things like passing &sc->memcg_low_skipped into memcg code.