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=-16.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT 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 5035EC433DB for ; Fri, 19 Mar 2021 05:49:49 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 7AF0064F65 for ; Fri, 19 Mar 2021 05:49:48 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7AF0064F65 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=cmpxchg.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id C8B9F8D0002; Fri, 19 Mar 2021 01:49:47 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id BEF946B0073; Fri, 19 Mar 2021 01:49:47 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A2C1F8D0002; Fri, 19 Mar 2021 01:49:47 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0135.hostedemail.com [216.40.44.135]) by kanga.kvack.org (Postfix) with ESMTP id 8319C6B0072 for ; Fri, 19 Mar 2021 01:49:47 -0400 (EDT) Received: from smtpin22.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay04.hostedemail.com (Postfix) with ESMTP id 343628E6A for ; Fri, 19 Mar 2021 05:49:47 +0000 (UTC) X-FDA: 77935547172.22.715C51C Received: from mail-qk1-f171.google.com (mail-qk1-f171.google.com [209.85.222.171]) by imf01.hostedemail.com (Postfix) with ESMTP id AEDD55001526 for ; Fri, 19 Mar 2021 05:49:45 +0000 (UTC) Received: by mail-qk1-f171.google.com with SMTP id q3so1783338qkq.12 for ; Thu, 18 Mar 2021 22:49:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cmpxchg-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=4EjKKyy6zJi89FUhVJH9257gvcZYHljfd48zTgz5zIU=; b=x3QpbZL8xF3lB+fhzJjWSXfOdOYw7IT0xr7pVuPujmaG7k9pCD7DqET3m+8xVwZ5fs 9k297z+F24N6dyH21lb1L1Xd/k1LuGHRov8Ow80+4RDOpZh75ea7sqWiYm12gaCu5Q0J sVUBYLc1+1h4Kx1tvB+uDpg0n/HxaUQ8X4aeJo9h/4EaSEOm3BpoNbfNPF+U9GdYaYI3 73ndGlNaJSVE+R5glrk8jWDvFVtpL1IKfaJbAWKVNZ0v8wEScvUqQPE7fcnMOvALYcJR T7RUNMqMWmr2NpNZNqMiKeRDcre+/EKQRJ7tR6mEQYtwnxKl3A40jfWoKVM7UDzDdbvI VClQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=4EjKKyy6zJi89FUhVJH9257gvcZYHljfd48zTgz5zIU=; b=jhthW2+AxXp21BCyCMjP/bHgwCu6gtQd0n213d+REjZywfNij4n1FNGE0OJijt4BWk tvTKjDONjHaK8mWPpdMA5T4zCCpmtK0l29uSKltogKpzPPf14qmNtCfvje1rDWm4Epsi +qUNt91vMSKsWoHj8G6FphsEV0g0eHgimX4GnMefAY1ZnYGaFUg89f1/d4d5dDTx7Il8 0BmzDG9UjyUj9Ufi76DmRycYO9rQPZFJcXIxmU6TbliHHZanudjVN+OwOtQdkeyXkpB+ UpidpUirA4Ntj7HgI46thMNUBC2FNpdgywGx31YV11q7YIcI4INT3K0JFZ8VeuuCiNqS qUHw== X-Gm-Message-State: AOAM532C0ogfvuJVYSiUdqdnpUpPy+gjavuOLhcTHrTpDkGxcuaihPKQ 6Xc1W2FYz1x9x+Q4KEoKIUlSIQ== X-Google-Smtp-Source: ABdhPJxsQgowksR37eF/5ncjQ+ws7e0Hspq3cD30p7EIjiZktuxNXTFxMUr5xN2ZButKHCm1FmH99g== X-Received: by 2002:a05:620a:c95:: with SMTP id q21mr7689952qki.360.1616132985879; Thu, 18 Mar 2021 22:49:45 -0700 (PDT) Received: from localhost (70.44.39.90.res-cmts.bus.ptd.net. [70.44.39.90]) by smtp.gmail.com with ESMTPSA id a10sm3583594qkh.122.2021.03.18.22.49.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 Mar 2021 22:49:45 -0700 (PDT) From: Johannes Weiner To: Andrew Morton Cc: Hugh Dickins , Shakeel Butt , Michal Hocko , linux-mm@kvack.org, cgroups@vger.kernel.org, linux-kernel@vger.kernel.org, kernel-team@fb.com Subject: [PATCH 1/2] mm: memcontrol: don't allocate cgroup swap arrays when memcg is disabled Date: Fri, 19 Mar 2021 01:49:43 -0400 Message-Id: <20210319054944.50048-1-hannes@cmpxchg.org> X-Mailer: git-send-email 2.30.1 MIME-Version: 1.0 X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: AEDD55001526 X-Stat-Signature: 7hor5iuy1uwj6xke7nnxa4ged69kxzyi Received-SPF: none (cmpxchg.org>: No applicable sender policy available) receiver=imf01; identity=mailfrom; envelope-from=""; helo=mail-qk1-f171.google.com; client-ip=209.85.222.171 X-HE-DKIM-Result: pass/pass X-HE-Tag: 1616132985-721078 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: Since commit 2d1c498072de ("mm: memcontrol: make swap tracking an integral part of memory control"), the cgroup swap arrays are used to track memory ownership at the time of swap readahead and swapoff, even if swap space *accounting* has been turned off by the user via swapaccount=3D0 (which sets cgroup_memory_noswap). However, the patch was overzealous: by simply dropping the cgroup_memory_noswap conditionals in the swapon, swapoff and uncharge path, it caused the cgroup arrays being allocated even when the memory controller as a whole is disabled. This is a waste of that memory. Restore mem_cgroup_disabled() checks, implied previously by cgroup_memory_noswap, in the swapon, swapoff, and swap_entry_free callbacks. Fixes: 2d1c498072de ("mm: memcontrol: make swap tracking an integral part= of memory control") Reported-by: Hugh Dickins Signed-off-by: Johannes Weiner --- mm/memcontrol.c | 3 +++ mm/swap_cgroup.c | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/mm/memcontrol.c b/mm/memcontrol.c index 668d1d7c2645..49bdcf603af1 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -7101,6 +7101,9 @@ void mem_cgroup_uncharge_swap(swp_entry_t entry, un= signed int nr_pages) struct mem_cgroup *memcg; unsigned short id; =20 + if (mem_cgroup_disabled()) + return; + id =3D swap_cgroup_record(entry, 0, nr_pages); rcu_read_lock(); memcg =3D mem_cgroup_from_id(id); diff --git a/mm/swap_cgroup.c b/mm/swap_cgroup.c index 7f34343c075a..08c3246f9269 100644 --- a/mm/swap_cgroup.c +++ b/mm/swap_cgroup.c @@ -171,6 +171,9 @@ int swap_cgroup_swapon(int type, unsigned long max_pa= ges) unsigned long length; struct swap_cgroup_ctrl *ctrl; =20 + if (mem_cgroup_disabled()) + return 0; + length =3D DIV_ROUND_UP(max_pages, SC_PER_PAGE); array_size =3D length * sizeof(void *); =20 @@ -206,6 +209,9 @@ void swap_cgroup_swapoff(int type) unsigned long i, length; struct swap_cgroup_ctrl *ctrl; =20 + if (mem_cgroup_disabled()) + return; + mutex_lock(&swap_cgroup_mutex); ctrl =3D &swap_cgroup_ctrl[type]; map =3D ctrl->map; --=20 2.30.1