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=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,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 B5E03C433B4 for ; Wed, 14 Apr 2021 10:05:15 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 5BB98610C8 for ; Wed, 14 Apr 2021 10:05:15 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 5BB98610C8 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=bytedance.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id CC5756B007E; Wed, 14 Apr 2021 06:05:14 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id C9BD66B0080; Wed, 14 Apr 2021 06:05:14 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B3CF66B0081; Wed, 14 Apr 2021 06:05:14 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0127.hostedemail.com [216.40.44.127]) by kanga.kvack.org (Postfix) with ESMTP id 9BDF46B007E for ; Wed, 14 Apr 2021 06:05:14 -0400 (EDT) Received: from smtpin02.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay03.hostedemail.com (Postfix) with ESMTP id 5BB8F824999B for ; Wed, 14 Apr 2021 10:05:14 +0000 (UTC) X-FDA: 78030539748.02.651A688 Received: from mail-pf1-f171.google.com (mail-pf1-f171.google.com [209.85.210.171]) by imf14.hostedemail.com (Postfix) with ESMTP id CF31FC0007DA for ; Wed, 14 Apr 2021 10:05:05 +0000 (UTC) Received: by mail-pf1-f171.google.com with SMTP id a12so13386678pfc.7 for ; Wed, 14 Apr 2021 03:05:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=WNtB4o+0je6m6Iv/hxpsZ7k1lBzZu9C3dQfxcFge/sY=; b=K2suukuNiVkLANxIkI3yCx5pOloVIYD8+TW6JJAGH7k9zrO0/A+tXKSMs1r8qgYHom dKbXsUqNx28Q1ZC8G+CqSgBLdX/6p97YfgyLWtPv37D/rqB4Sn5HjJFW2vgyxEyR/6rv KfdYTYJFgCb3TUdmWTr+qXWg6r8FlYO5GvL7FjU0O/4CSHXO99VPHM8FXvmOjPlTOWYt Qah3E3fu04pTj1qB0Q6sOAt3dsQCAKxKpfgfN8zHRKSqlI6bjeDoRZwXNWDd2Iezhb+G 2n5xuyRPsm7In+XuOJKGE5csNq5ddTP5NFsWGLCFD5LckfegyRDWdcTUiDz8yJK80jcr dqqQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=WNtB4o+0je6m6Iv/hxpsZ7k1lBzZu9C3dQfxcFge/sY=; b=hqpg7Ovu1SAl8OpLZ4QMLdi5B08u2bUtmgm5qa2teUypYZcXDrEbU3YQJM0ykcTwLw JMtSOHskLoPFUqUj3UQQjkSPWeOQs7dkf4vdU03JRLJXOM4b3gKCHu7tZMCK+VaT69UO 6aUZhfeKp4e2g1S1zLU8SMwA3as8efdGDbalanmetJ6Cdxr17EZJQfMOEFxU+h/yOoOY ueVRVRj4s0kfZ1WGc6u8qDEVwBhL3joRwp7UbNuJ7lWM5AwdhV78rYUEgy/AXVM3W08L aqmdKhBkiAK7p1lcBo4wYO8qEXriPRJUZoG6J+dYD6OC1PoW/HbZZwjBJyx8Bsb2IkQh bYzw== X-Gm-Message-State: AOAM530A6ekMr8hROdroOaEo01qx0ytwIgLTenYo+ys8YCOJb5otnUxC nMnjL5SJAgP16quOL2Es2y0elidZOzACZkqVSGd3+A== X-Google-Smtp-Source: ABdhPJykKLm23kCH/wnmdc/CWEONNuwxGeR3Xxpl2OWhmqxsoBzGI44cwtF1IAS9iuYGqAXyf3SGdk4LKH9dNCqdSYk= X-Received: by 2002:a65:6645:: with SMTP id z5mr35991057pgv.273.1618394712780; Wed, 14 Apr 2021 03:05:12 -0700 (PDT) MIME-Version: 1.0 References: <20210413065153.63431-1-songmuchun@bytedance.com> <20210413065153.63431-3-songmuchun@bytedance.com> In-Reply-To: From: Muchun Song Date: Wed, 14 Apr 2021 18:04:35 +0800 Message-ID: Subject: Re: [External] Re: [PATCH 2/7] mm: memcontrol: bail out early when !mm in get_mem_cgroup_from_mm To: Michal Hocko Cc: guro@fb.com, hannes@cmpxchg.org, akpm@linux-foundation.org, shakeelb@google.com, vdavydov.dev@gmail.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org, duanxiongchun@bytedance.com, fam.zheng@bytedance.com Content-Type: text/plain; charset="UTF-8" X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: CF31FC0007DA X-Stat-Signature: x5uybj9jor1gzi1t1u76fhybh1eb9mpr Received-SPF: none (bytedance.com>: No applicable sender policy available) receiver=imf14; identity=mailfrom; envelope-from=""; helo=mail-pf1-f171.google.com; client-ip=209.85.210.171 X-HE-DKIM-Result: pass/pass X-HE-Tag: 1618394705-874577 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 Wed, Apr 14, 2021 at 5:24 PM Michal Hocko wrote: > > On Tue 13-04-21 14:51:48, Muchun Song wrote: > > When mm is NULL, we do not need to hold rcu lock and call css_tryget for > > the root memcg. And we also do not need to check !mm in every loop of > > while. So bail out early when !mm. > > mem_cgroup_charge and other callers unconditionally drop the reference > so how come this does not underflow reference count? For the root memcg, the CSS_NO_REF flag is set, so css_get and css_put do not get or put reference. Thanks. > > > Signed-off-by: Muchun Song > > Acked-by: Johannes Weiner > > Reviewed-by: Shakeel Butt > > --- > > mm/memcontrol.c | 21 ++++++++++----------- > > 1 file changed, 10 insertions(+), 11 deletions(-) > > > > diff --git a/mm/memcontrol.c b/mm/memcontrol.c > > index f229de925aa5..9cbfff59b171 100644 > > --- a/mm/memcontrol.c > > +++ b/mm/memcontrol.c > > @@ -901,20 +901,19 @@ struct mem_cgroup *get_mem_cgroup_from_mm(struct mm_struct *mm) > > if (mem_cgroup_disabled()) > > return NULL; > > > > + /* > > + * Page cache insertions can happen without an > > + * actual mm context, e.g. during disk probing > > + * on boot, loopback IO, acct() writes etc. > > + */ > > + if (unlikely(!mm)) > > + return root_mem_cgroup; > > + > > rcu_read_lock(); > > do { > > - /* > > - * Page cache insertions can happen without an > > - * actual mm context, e.g. during disk probing > > - * on boot, loopback IO, acct() writes etc. > > - */ > > - if (unlikely(!mm)) > > + memcg = mem_cgroup_from_task(rcu_dereference(mm->owner)); > > + if (unlikely(!memcg)) > > memcg = root_mem_cgroup; > > - else { > > - memcg = mem_cgroup_from_task(rcu_dereference(mm->owner)); > > - if (unlikely(!memcg)) > > - memcg = root_mem_cgroup; > > - } > > } while (!css_tryget(&memcg->css)); > > rcu_read_unlock(); > > return memcg; > > -- > > 2.11.0 > > -- > Michal Hocko > SUSE Labs