Message ID | 20230419092007.186938-1-haifeng.xu@shopee.com |
---|---|
State | New |
Headers |
Return-Path: <linux-kernel-owner@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp258590vqo; Wed, 19 Apr 2023 02:55:17 -0700 (PDT) X-Google-Smtp-Source: AKy350Z7Ep98w2o4XgPIaIWvlwcBFQZDuPVhsU0Eb07Frx3y93vJ/8cDJ/Pc9Zcn9jddLXCk90rY X-Received: by 2002:a05:6a00:1790:b0:63b:8dcc:84de with SMTP id s16-20020a056a00179000b0063b8dcc84demr2463709pfg.4.1681898117328; Wed, 19 Apr 2023 02:55:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1681898117; cv=none; d=google.com; s=arc-20160816; b=0CBrCV+9ppNj4/XXAEH3j9CXHFO0vFOfUp05LUtNFWKL5f3xkY4ENQWb9xCdQVMrgA amqYL+G3CoslcUbQCYFcePgrUuffrKb5LU8WoOupRO7uwsbJyzx9G7oG8IBuipBezkok ZHz19hFUJhrneK7Crpt/CE469MpwTrvcerpYFunfWUy4c6nVnj/Ow0aYMBK50iNAg6Cs ofMgg/CNEJOA62q7RoCcJfaTK4pNyuqyVeWAJBxyPM82XyCf01Y7JJthrn63qKJjBwBc BHUKi2/jOuoujWED07eeFp/2XTrZjuIHpaA20LrAa1nfTxEg2Q+aIezJ3VjgYbf/UU6Z n6Sg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=D6j3fNAFXjpvBoTtgGD0M8hc4WjhauUm258DFePjQyw=; b=TUca+VQvhBZkVEcX49Ds7dscWhCCtcT1EaK7VpkOJK1hl8xoAQqWT070OVr7H5rMKX J7Fwf0fwBQ5RSdR8ptpn4B0VsjEOhH2NrpBcvHfbOTSPMFNCAWB4LvOFkKOPgjmvu7tO kvCWaIkBKxp6WG1eNJLgEfyViuavzMGkIC/F5kYW4okz6Z9llhQe1ifCfBu83dJa4JHU fVdJm+c73vqFv+G2QLExhxDp3bum4pVOi2pJhmjRQgMSvhVe7upUUJq/lrfDot3+IU9/ 09ExTXk1tk2i4ohL6LayfGuQaSDlGeHxQTfVoTQf4veo1rmgmrwNMr5OhmdtKMTAjMPR giug== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@shopee.com header.s=shopee.com header.b=h3eMV3Es; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=shopee.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id w64-20020a638243000000b00518cf8916e2si15944935pgd.415.2023.04.19.02.55.04; Wed, 19 Apr 2023 02:55:17 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@shopee.com header.s=shopee.com header.b=h3eMV3Es; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=shopee.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232786AbjDSJU4 (ORCPT <rfc822;peter110.wang@gmail.com> + 99 others); Wed, 19 Apr 2023 05:20:56 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49150 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232701AbjDSJUy (ORCPT <rfc822;linux-kernel@vger.kernel.org>); Wed, 19 Apr 2023 05:20:54 -0400 Received: from mail-pf1-x432.google.com (mail-pf1-x432.google.com [IPv6:2607:f8b0:4864:20::432]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E3D8765A9 for <linux-kernel@vger.kernel.org>; Wed, 19 Apr 2023 02:20:53 -0700 (PDT) Received: by mail-pf1-x432.google.com with SMTP id d2e1a72fcca58-63b73203e0aso14703523b3a.1 for <linux-kernel@vger.kernel.org>; Wed, 19 Apr 2023 02:20:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=shopee.com; s=shopee.com; t=1681896053; x=1684488053; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=D6j3fNAFXjpvBoTtgGD0M8hc4WjhauUm258DFePjQyw=; b=h3eMV3EsSX72f7O7hgzr0WV6+ecbdyXqfirfdt6Dq44ghMI+MWgX/qisWcnKFu9icY 9uJjgRr9AXvqs3+YsAtOHZgn9PEctz3hn8qqUDbtDi2h+6u7Fs5q7Ef82yf/0LD4QMOs g9cRGGrEjjZJpkpbkvZxMbNHfU10VvjZClYzFQamPXLqx14V87rxncBYi1zqGUj1yqQv 8Btur7MSGiP4o+vZB25aMIgcFx/6PPXw93WiWJwi3Sq+tMRewk9DhjmIzpkGIU6+ZMja pSItz/sP1WwsqPUz0vhTy2bn1E+Okus33elHUIVUFQn5NS+pdarsTA2HR6ApdrEJaIFG Y5hw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1681896053; x=1684488053; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=D6j3fNAFXjpvBoTtgGD0M8hc4WjhauUm258DFePjQyw=; b=a0Cjx/JoSPHOedDSJSNMHaYns7o5jfaMzypqePFTFxg6KkzTHyB5y3gDgujn8VPpkw MTmRKLOJtz/te23xjAPVUmgGQkABB3KkBMFaMIPMZurJmOCRCvS80pY/SzGPnOYKLK// U+Mn+7V6WxS1J6xVf93SuXR9uU4s1QwcvgfsGmUjnSX2zrP8EzNryTyZ8aogFoedeYIB qKhG/VL//KCY5/MvQxsYMeqjjvad80hz220wa6zpjMkH1sQfu4su4K+haLTuBnsIJCE4 /VxlCMzZ+LNQQD0UZY4KF0/+oadjAflxv7EzleWeWWNzt1G9eVuijFCo6VPhhX5xVxHU KVRQ== X-Gm-Message-State: AAQBX9df73c6MppAmC6y3Qv/pQmjJyfBMVn4IKGM/qS93g1RKtERvifx yYDWQFHa7I+XKTCe7e3K9hcHjc3qgTc0XVUWKxQSFw== X-Received: by 2002:a17:903:294c:b0:1a6:846f:90cb with SMTP id li12-20020a170903294c00b001a6846f90cbmr1606364plb.11.1681896053424; Wed, 19 Apr 2023 02:20:53 -0700 (PDT) Received: from ubuntu-haifeng.default.svc.cluster.local ([101.127.248.173]) by smtp.gmail.com with ESMTPSA id z22-20020a1709028f9600b001a52cfc73acsm10932111plo.129.2023.04.19.02.20.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 Apr 2023 02:20:52 -0700 (PDT) From: Haifeng Xu <haifeng.xu@shopee.com> To: mhocko@suse.com Cc: hannes@cmpxchg.org, roman.gushchin@linux.dev, shakeelb@google.com, akpm@linux-foundation.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Haifeng Xu <haifeng.xu@shopee.com> Subject: [PATCH] mm, vmpressure: remove redundant check in vmpressure() Date: Wed, 19 Apr 2023 09:20:07 +0000 Message-Id: <20230419092007.186938-1-haifeng.xu@shopee.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: <linux-kernel.vger.kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1763598000133807337?= X-GMAIL-MSGID: =?utf-8?q?1763598000133807337?= |
Series |
mm, vmpressure: remove redundant check in vmpressure()
|
|
Commit Message
Haifeng Xu
April 19, 2023, 9:20 a.m. UTC
There are three places, vmpressure_prio(), shrink_node_memcgs() and
shrink_node(), which invoke vmpressure(). But only shrink_node_memcgs()
sets tree to false and the memcg used in it is not NULL, so we don't
check it again in vmpressure().
Signed-off-by: Haifeng Xu <haifeng.xu@shopee.com>
---
mm/vmpressure.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Comments
On Wed, 19 Apr 2023 09:20:07 +0000 Haifeng Xu <haifeng.xu@shopee.com> wrote: > There are three places, vmpressure_prio(), shrink_node_memcgs() and > shrink_node(), which invoke vmpressure(). But only shrink_node_memcgs() > sets tree to false and the memcg used in it is not NULL, so we don't > check it again in vmpressure(). > > ... > > --- a/mm/vmpressure.c > +++ b/mm/vmpressure.c > @@ -284,7 +284,7 @@ void vmpressure(gfp_t gfp, struct mem_cgroup *memcg, bool tree, > enum vmpressure_levels level; > > /* For now, no users for root-level efficiency */ > - if (!memcg || mem_cgroup_is_root(memcg)) > + if (mem_cgroup_is_root(memcg)) > return; > > spin_lock(&vmpr->sr_lock); try_to_free_pages()-> do_try_to_free_pages()-> vmpressure_prio()-> vmpressure()-> crash what am I missing here? It does appear that vmpressure() could be simplified with if (!memcg) memcg = root_mem_cgroup; so the test you identified goes away and the memcg_to_vmpressure() call becomes simpler. But that's such a small change it doesn't seem worth the effort.
On 2023/4/20 04:03, Andrew Morton wrote: > On Wed, 19 Apr 2023 09:20:07 +0000 Haifeng Xu <haifeng.xu@shopee.com> wrote: > >> There are three places, vmpressure_prio(), shrink_node_memcgs() and >> shrink_node(), which invoke vmpressure(). But only shrink_node_memcgs() >> sets tree to false and the memcg used in it is not NULL, so we don't >> check it again in vmpressure(). >> >> ... >> >> --- a/mm/vmpressure.c >> +++ b/mm/vmpressure.c >> @@ -284,7 +284,7 @@ void vmpressure(gfp_t gfp, struct mem_cgroup *memcg, bool tree, >> enum vmpressure_levels level; >> >> /* For now, no users for root-level efficiency */ >> - if (!memcg || mem_cgroup_is_root(memcg)) >> + if (mem_cgroup_is_root(memcg)) >> return; >> >> spin_lock(&vmpr->sr_lock); > > try_to_free_pages()-> > do_try_to_free_pages()-> > vmpressure_prio()-> > vmpressure()-> > crash > > what am I missing here? > > vmpressure_prio() set tree to true, so the crash won't happen. > It does appear that vmpressure() could be simplified with > > if (!memcg) > memcg = root_mem_cgroup; > > so the test you identified goes away and the memcg_to_vmpressure() call > becomes simpler. But that's such a small change it doesn't seem worth > the effort. memcg_to_vmpressure() has taken this case that the memcg is NULL into account and we do not need to change it. The test I identified is in the branch that the tree is set to false. In this branch, memcg can never be NULL because only shrink_node_memcgs() will step into it.
diff --git a/mm/vmpressure.c b/mm/vmpressure.c index b52644771cc4..3e4251a55e56 100644 --- a/mm/vmpressure.c +++ b/mm/vmpressure.c @@ -284,7 +284,7 @@ void vmpressure(gfp_t gfp, struct mem_cgroup *memcg, bool tree, enum vmpressure_levels level; /* For now, no users for root-level efficiency */ - if (!memcg || mem_cgroup_is_root(memcg)) + if (mem_cgroup_is_root(memcg)) return; spin_lock(&vmpr->sr_lock);