Received: by 2002:a05:6a10:f3d0:0:0:0:0 with SMTP id a16csp1177624pxv; Fri, 9 Jul 2021 20:38:53 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyg47xtAXYBSf051qYOD8ahwXb93Wgjiyv3ah2HrzR5+AfghOI7ZSCmk4D6ZfqmzE7zo7Bp X-Received: by 2002:a02:7093:: with SMTP id f141mr6271721jac.24.1625888333017; Fri, 09 Jul 2021 20:38:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1625888333; cv=none; d=google.com; s=arc-20160816; b=vwl84NofvA0RVyIcDItJh/XFiv+mxaUTshh1lCxDWvAWKrMP4rtVAkZcid6O6UI8Jd 6A/0raO1hRJjBFqdo3EWXKzQF0dJfCgJenz2G3yx/pZMW11PRBkkCrhBQnOqx9nEijZ+ VhwpSUJLwuTSVfotM7CewYyfY1VZ8XmwDQ48IQt2+Oo5X5rXwYyCP75QVCugphlOaihW JLZ8in15JADevjM4iP2sh10/KcGS0fNigr7O64mH4/Pb8yPIJR2MhZ7WReHU8CMpzdUd iw/zceXBUkL5JSYKQ7rMELpN+sV/VCBhhrjUMY96byvOWAh9E77LHRI4WAm9vC31OC0B RGmw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :in-reply-to:mime-version:user-agent:date:message-id:from:references :cc:to:subject; bh=Mj5XlCLd/9CoYnGW9U12IblxMQYkRlcyNYXfvHKqc14=; b=sckk/htCXLTU6GYq7PJ7U59Y5GmcpoIHtOiLtmsb+XZCxA6dSt8mnASI1B8fh5ibvJ 5+ia1SutbnnzOF3n8Aeco1FaALAlMlk5c5kuaR8Iptb5wgtp7DFH/Cfxtj16I4s+olcJ 6k4K0spj2JWCttMcPqk5h1jP0lrLRZJPRl6P3E4ii9IVSCwNxav8DjV6yBT+yCSXM6gx 1HHX3QHkq+xx9zjC7nS1IptyT2XC3SaGfz8XFjOz8WrU6PqBNmUVdCkNqK5IWwDOMqUI mi84FwBoBLZs/KE9JgyZah8eQ9kIWdQk4GQFI4IikozD1ebBc9M9110XEBIgkmvsjO4G s+lg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=huawei.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id j23si7422233iok.60.2021.07.09.20.38.39; Fri, 09 Jul 2021 20:38:53 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=huawei.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231293AbhGJDkV (ORCPT + 99 others); Fri, 9 Jul 2021 23:40:21 -0400 Received: from szxga03-in.huawei.com ([45.249.212.189]:10346 "EHLO szxga03-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230345AbhGJDkV (ORCPT ); Fri, 9 Jul 2021 23:40:21 -0400 Received: from dggeme703-chm.china.huawei.com (unknown [172.30.72.56]) by szxga03-in.huawei.com (SkyGuard) with ESMTP id 4GMFwc4rwXz77Zb; Sat, 10 Jul 2021 11:33:04 +0800 (CST) Received: from [10.174.177.209] (10.174.177.209) by dggeme703-chm.china.huawei.com (10.1.199.99) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2176.2; Sat, 10 Jul 2021 11:37:27 +0800 Subject: Re: [PATCH v3 1/3] mm, memcg: add mem_cgroup_disabled checks in vmpressure and swap-related functions To: Suren Baghdasaryan CC: Johannes Weiner , Michal Hocko , , Andrew Morton , Shakeel Butt , Roman Gushchin , , Yang Shi , , , Vlastimil Babka , Jens Axboe , Joonsoo Kim , David Hildenbrand , Matthew Wilcox , , Minchan Kim , LKML , cgroups mailinglist , linux-mm , kernel-team , Tejun Heo References: <20210710003626.3549282-1-surenb@google.com> From: Miaohe Lin Message-ID: <24966bfd-008f-3b48-36f7-4aa298057559@huawei.com> Date: Sat, 10 Jul 2021 11:37:27 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.6.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset="utf-8" Content-Language: en-US Content-Transfer-Encoding: 7bit X-Originating-IP: [10.174.177.209] X-ClientProxiedBy: dggems706-chm.china.huawei.com (10.3.19.183) To dggeme703-chm.china.huawei.com (10.1.199.99) X-CFilter-Loop: Reflected Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2021/7/10 10:40, Suren Baghdasaryan wrote: > On Fri, Jul 9, 2021 at 6:52 PM Miaohe Lin wrote: >> >> On 2021/7/10 8:36, Suren Baghdasaryan wrote: >>> Add mem_cgroup_disabled check in vmpressure, mem_cgroup_uncharge_swap and >>> cgroup_throttle_swaprate functions. This minimizes the memcg overhead in >>> the pagefault and exit_mmap paths when memcgs are disabled using >>> cgroup_disable=memory command-line option. >>> This change results in ~2.1% overhead reduction when running PFT test >>> comparing {CONFIG_MEMCG=n, CONFIG_MEMCG_SWAP=n} against {CONFIG_MEMCG=y, >>> CONFIG_MEMCG_SWAP=y, cgroup_disable=memory} configuration on an 8-core >>> ARM64 Android device. >>> >>> Signed-off-by: Suren Baghdasaryan >>> Reviewed-by: Shakeel Butt >>> Acked-by: Johannes Weiner >>> --- >>> mm/memcontrol.c | 3 +++ >>> mm/swapfile.c | 3 +++ >>> mm/vmpressure.c | 7 ++++++- >>> 3 files changed, 12 insertions(+), 1 deletion(-) >>> >>> diff --git a/mm/memcontrol.c b/mm/memcontrol.c >>> index ae1f5d0cb581..a228cd51c4bd 100644 >>> --- a/mm/memcontrol.c >>> +++ b/mm/memcontrol.c >>> @@ -7305,6 +7305,9 @@ void mem_cgroup_uncharge_swap(swp_entry_t entry, unsigned int nr_pages) >>> struct mem_cgroup *memcg; >>> unsigned short id; >>> >>> + if (mem_cgroup_disabled()) >>> + return; >>> + >>> id = swap_cgroup_record(entry, 0, nr_pages); >>> rcu_read_lock(); >>> memcg = mem_cgroup_from_id(id); >>> diff --git a/mm/swapfile.c b/mm/swapfile.c >>> index 1e07d1c776f2..707fa0481bb4 100644 >>> --- a/mm/swapfile.c >>> +++ b/mm/swapfile.c >>> @@ -3778,6 +3778,9 @@ void cgroup_throttle_swaprate(struct page *page, gfp_t gfp_mask) >>> struct swap_info_struct *si, *next; >>> int nid = page_to_nid(page); >>> >>> + if (mem_cgroup_disabled()) >>> + return; >>> + >> >> Many thanks for your patch. But I'am somewhat confused about this change. >> IMO, cgroup_throttle_swaprate() is only related to blk_cgroup and it seems >> it's irrelevant to mem_cgroup. Could you please have a explanation for me? > > cgroup_throttle_swaprate() is a NoOp when CONFIG_MEMCG=n (see: > https://elixir.bootlin.com/linux/latest/source/include/linux/swap.h#L699), I browsed the git history related to cgroup_throttle_swaprate() and found this: """ mm: memcontrol: move out cgroup swaprate throttling The cgroup swaprate throttling is about matching new anon allocations to the rate of available IO when that is being throttled. It's the io controller hooking into the VM, rather than a memory controller thing. """ It seems cgroup_throttle_swaprate() is working with memory allocations. So mem_cgroup matters this way. But I'am not sure... > therefore I assume we can safely skip it when memcgs are disabled via > "cgroup_disable=memory". From perf results I also see no hits on this > function when CONFIG_MEMCG=n. > However, looking into the code, I'm not sure why it should depend on > CONFIG_MEMCG. But it's Friday night and I might be missing some > details here... Many thanks for your replay at Friday night. :) > >> >> Thanks! >> >>> if (!(gfp_mask & __GFP_IO)) >>> return; >>> >>> diff --git a/mm/vmpressure.c b/mm/vmpressure.c >>> index d69019fc3789..9b172561fded 100644 >>> --- a/mm/vmpressure.c >>> +++ b/mm/vmpressure.c >>> @@ -240,7 +240,12 @@ static void vmpressure_work_fn(struct work_struct *work) >>> void vmpressure(gfp_t gfp, struct mem_cgroup *memcg, bool tree, >>> unsigned long scanned, unsigned long reclaimed) >>> { >>> - struct vmpressure *vmpr = memcg_to_vmpressure(memcg); >>> + struct vmpressure *vmpr; >>> + >>> + if (mem_cgroup_disabled()) >>> + return; >>> + >>> + vmpr = memcg_to_vmpressure(memcg); >>> >>> /* >>> * Here we only want to account pressure that userland is able to >>> >> > . >