From patchwork Fri Feb 28 07:58:06 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shakeel Butt X-Patchwork-Id: 13995826 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 828ADC282C5 for ; Fri, 28 Feb 2025 07:58:35 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id EE33D280001; Fri, 28 Feb 2025 02:58:34 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id E927B6B008A; Fri, 28 Feb 2025 02:58:34 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D3312280001; Fri, 28 Feb 2025 02:58:34 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id B3C636B0088 for ; Fri, 28 Feb 2025 02:58:34 -0500 (EST) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 3CD55A016A for ; Fri, 28 Feb 2025 07:58:34 +0000 (UTC) X-FDA: 83168601348.02.C97ECE5 Received: from out-175.mta1.migadu.com (out-175.mta1.migadu.com [95.215.58.175]) by imf20.hostedemail.com (Postfix) with ESMTP id 8CE581C000D for ; Fri, 28 Feb 2025 07:58:32 +0000 (UTC) Authentication-Results: imf20.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=pKGhwYIy; spf=pass (imf20.hostedemail.com: domain of shakeel.butt@linux.dev designates 95.215.58.175 as permitted sender) smtp.mailfrom=shakeel.butt@linux.dev; dmarc=pass (policy=none) header.from=linux.dev ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1740729512; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=4VCEGjyZe+NN0DZWtHUpr5+jCBnuJyJ0VIJUe5VXlq8=; b=KBIRFXEXyIt510j97nLJhhcGIYLXukVRARQB9+CkSDQVC+B/cveQUoesnuFIZ2i8PFAFkk e9Enox1VbfE6siUkpy40QHZbdARSYlMbZUjNqivc2G62QYKi+uRKCja5RtucW5sisCa12i IiNqPOPT8byIOJ4bHZrCRCc7ageGHCk= ARC-Authentication-Results: i=1; imf20.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=pKGhwYIy; spf=pass (imf20.hostedemail.com: domain of shakeel.butt@linux.dev designates 95.215.58.175 as permitted sender) smtp.mailfrom=shakeel.butt@linux.dev; dmarc=pass (policy=none) header.from=linux.dev ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1740729512; a=rsa-sha256; cv=none; b=lQRDEGLK2PGox8RqHbbb4YI3fHabgdZXDEUwKxOWaq9hboubE+JWLQrSJyqbfiXXulA/ka Ti+50gCUXITaicqPa64mbXssQosVWNz9UJoX25gB6NhmaevfUg0y/J6qlp9ze0T5PS1tWJ mmX0oGyVDZB8cQm04Cd4x5+fd77tO5w= X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1740729511; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=4VCEGjyZe+NN0DZWtHUpr5+jCBnuJyJ0VIJUe5VXlq8=; b=pKGhwYIythzfPZUUvu9WlOfs4j0TLxTYveugs6VVz6vtAmEdqTKcfPp3JrH0JyMA0ymAC4 hX0Qdr6CY54uCEink45UtRfouqr3vp5DvPqBt9JxhObqqgUcqXSLkl1G7truPbl8j0SF+i YVXLPk+zopZiy6Wrq9/L+SrnXUM7cjg= From: Shakeel Butt To: Andrew Morton Cc: Johannes Weiner , Michal Hocko , Roman Gushchin , Muchun Song , linux-mm@kvack.org, cgroups@vger.kernel.org, linux-kernel@vger.kernel.org, Meta kernel team Subject: [PATCH 1/3] memcg: don't call propagate_protected_usage() for v1 Date: Thu, 27 Feb 2025 23:58:06 -0800 Message-ID: <20250228075808.207484-2-shakeel.butt@linux.dev> In-Reply-To: <20250228075808.207484-1-shakeel.butt@linux.dev> References: <20250228075808.207484-1-shakeel.butt@linux.dev> MIME-Version: 1.0 X-Migadu-Flow: FLOW_OUT X-Rspam-User: X-Stat-Signature: d6rq87szsnj1t84jxgbwohngmj9q4g11 X-Rspamd-Queue-Id: 8CE581C000D X-Rspamd-Server: rspam07 X-HE-Tag: 1740729512-300467 X-HE-Meta: U2FsdGVkX19q7K65agqFZ6mXh/6HbKXZWnPY6+R8ENmNcDfoEivb5zMDgIDSg74YwQCs8yB+vOBZSjIpyTIo46ye5BMvD4OSt6nypnLTHGXV+WfRfpcPTzYyN759n0B88Tb/MQpn3ja9micg7wlCGsGoneeZZhCIEk6/M/MJccvH11Al3BWcLAOnGk3kD6UQ9ZtdO/O4KqGCW5xD6jFgekKYbHhquKU1PzE4yl3w4xOKSKV6Bpry4/6QcivFEghADszPgOHJi2uSnHL86Rh9Kkw3xcU3wLRGcIDkIlfx/7k9ltMJoa+xjCfxEqtPTS62WycTtGyD8efbXPfnF/1QTI0HfCEJv6Gi0zpBoZgmoRe9TXZcK6AZ4438M0Asn+oeESXc1wArLPQTTAelhxmdEhQRuUD+ex7XLmwgiZHH2fcsF4u2QCNJeDnkUn43vX+0FYaAzj7WcdJGACFYSgxBCuT5HRv7+4RDegBo7f/uO/+W38XwNP2iDhbWcx1QgFn+2DnWKt0qUq6UsROPKouE+AHU0iGYCgknQxe2a8/6N1qEDRimSWHEftxXYj3/iOl+r+QoqMSzZZqsFICQ6/qdvyc/cJkoHHDaDq6g7cmj+yl4+qTIFUeW/NnlTszeIGPWl8eib3WI5efEEN8CW4xrR+jf81uCNwFgLLb+PtOHfa690r+qwDXsLPKe0KIGuXY97wWz5TCqwYCcoDNQ5Se2eoz/NzWpWIXXu0ltQiS0U6KoOaIcUYnsjAJ5FUmp5yRbRVwdPMg4Y9nP/yKh0eGdv+2KeAxomRSXNMF0LHh56A8tOa6GKUaTlnatSPLr0iIIZpD8HUC0SmvRqgmCVTEZDWQNBB5pjxx3GGyucqFyCe9zKNZiXatSUgU8RAyo/MVokmKBlTCK9VXGhwS8SaNdm84Dcr1HZ1f2X7U9hCjLilWIpOeEzQMRufNn+pqNmS8ixC0ymfLw3NuQmY9TyMx JIbVvkwH fb7dOzV00V77C/5lnpbwFc0IKNeucr1ErVH5NvC/wqFaAE7O0BYceQLk+pJGB2mtamfCct17ESZ3QTf+DDBgccl6UghHatrcOHrnDNIKeSQEfMrUFwlrqLu4FV5sxQh1cYPZ9IAJLGvurEy2P6Za1/syuJpDWv3i/rnYTL/AXcP5pAlvlmQZGtmzjg0yQMu43ehLI55TeJ06FWD2nhh7TjQhMmg== 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: List-Subscribe: List-Unsubscribe: Memcg-v1 does not support memory protection (min/low) and thus there is no need to track protected memory usage for it. Signed-off-by: Shakeel Butt --- mm/memcontrol.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mm/memcontrol.c b/mm/memcontrol.c index 55b0e9482c00..36b2dfbc86c0 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -3601,6 +3601,7 @@ mem_cgroup_css_alloc(struct cgroup_subsys_state *parent_css) { struct mem_cgroup *parent = mem_cgroup_from_css(parent_css); struct mem_cgroup *memcg, *old_memcg; + bool memcg_on_dfl = cgroup_subsys_on_dfl(memory_cgrp_subsys); old_memcg = set_active_memcg(parent); memcg = mem_cgroup_alloc(parent); @@ -3618,7 +3619,7 @@ mem_cgroup_css_alloc(struct cgroup_subsys_state *parent_css) if (parent) { WRITE_ONCE(memcg->swappiness, mem_cgroup_swappiness(parent)); - page_counter_init(&memcg->memory, &parent->memory, true); + page_counter_init(&memcg->memory, &parent->memory, memcg_on_dfl); page_counter_init(&memcg->swap, &parent->swap, false); #ifdef CONFIG_MEMCG_V1 WRITE_ONCE(memcg->oom_kill_disable, READ_ONCE(parent->oom_kill_disable)); @@ -3638,7 +3639,7 @@ mem_cgroup_css_alloc(struct cgroup_subsys_state *parent_css) return &memcg->css; } - if (cgroup_subsys_on_dfl(memory_cgrp_subsys) && !cgroup_memory_nosocket) + if (memcg_on_dfl && !cgroup_memory_nosocket) static_branch_inc(&memcg_sockets_enabled_key); if (!cgroup_memory_nobpf) From patchwork Fri Feb 28 07:58:07 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shakeel Butt X-Patchwork-Id: 13995827 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 13CB1C19776 for ; Fri, 28 Feb 2025 07:58:42 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6A48B6B008A; Fri, 28 Feb 2025 02:58:41 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 654CC280002; Fri, 28 Feb 2025 02:58:41 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 51C3D6B0092; Fri, 28 Feb 2025 02:58:41 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 344A16B008A for ; Fri, 28 Feb 2025 02:58:41 -0500 (EST) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 97C29C0484 for ; Fri, 28 Feb 2025 07:58:40 +0000 (UTC) X-FDA: 83168601600.10.1B3DB27 Received: from out-170.mta1.migadu.com (out-170.mta1.migadu.com [95.215.58.170]) by imf06.hostedemail.com (Postfix) with ESMTP id C415E18000C for ; Fri, 28 Feb 2025 07:58:38 +0000 (UTC) Authentication-Results: imf06.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=KVQzTsVV; spf=pass (imf06.hostedemail.com: domain of shakeel.butt@linux.dev designates 95.215.58.170 as permitted sender) smtp.mailfrom=shakeel.butt@linux.dev; dmarc=pass (policy=none) header.from=linux.dev ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1740729519; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=jgR5BcL3MvfMipx+x4bMFzdCySvKkv9t6LJsU3AWxSI=; b=vmE8Gsyeoe4qesxVxSqPfK1ugYwxvZd0wtZuQYy85sS4AMGGnboWur9dDZtxVMdXWRtsho 0Uy8acMpD5fy2gQEFTd8EbYPBOqm/Rl5bbvTo5o/uviowPLhA3FQa0UwNZJUUA4bW7sKV6 DA6XbwbhXGYpnrQd3OMfxBzexn5YC+4= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1740729519; a=rsa-sha256; cv=none; b=Hgpy/l8DgAjc5f60269UZp2prLjrXnO8AATeH4UIdvCmGBxdlS/0k8C1PD1nfICWf6SjUk gwbz/nDAZ7vBo/09WdlXAa4fecV2ffwGRhqcdYlVt3LhSTb4ZkcA/r+/2ZmKMAKbVJDJ5/ Drn4AiDN4dyVcGdI/DW+eDqPQpUXYbE= ARC-Authentication-Results: i=1; imf06.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=KVQzTsVV; spf=pass (imf06.hostedemail.com: domain of shakeel.butt@linux.dev designates 95.215.58.170 as permitted sender) smtp.mailfrom=shakeel.butt@linux.dev; dmarc=pass (policy=none) header.from=linux.dev X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1740729517; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=jgR5BcL3MvfMipx+x4bMFzdCySvKkv9t6LJsU3AWxSI=; b=KVQzTsVVF++szQiHnUrzJKSOalzgMh4NejwrixnLYUQE8tb2MjSfqWnQ+d2+qFkNoVDAT3 I84I69ippat79QUZDAFdLwExq1udUPcG/9iMdGZ65f8pjfBnsMXVjxE4uNRuUpXvaxUt94 59CEZ1R0Z9C1uw+1ODGG9YuchIaZMT8= From: Shakeel Butt To: Andrew Morton Cc: Johannes Weiner , Michal Hocko , Roman Gushchin , Muchun Song , linux-mm@kvack.org, cgroups@vger.kernel.org, linux-kernel@vger.kernel.org, Meta kernel team Subject: [PATCH 2/3] page_counter: track failcnt only for legacy cgroups Date: Thu, 27 Feb 2025 23:58:07 -0800 Message-ID: <20250228075808.207484-3-shakeel.butt@linux.dev> In-Reply-To: <20250228075808.207484-1-shakeel.butt@linux.dev> References: <20250228075808.207484-1-shakeel.butt@linux.dev> MIME-Version: 1.0 X-Migadu-Flow: FLOW_OUT X-Stat-Signature: 19xacsb86r6edw5z5ncqw1ikkbutgujg X-Rspamd-Queue-Id: C415E18000C X-Rspam-User: X-Rspamd-Server: rspam01 X-HE-Tag: 1740729518-148538 X-HE-Meta: U2FsdGVkX18TOPiKHax5xz38TET/qFVqAAWIHRpeRHk+CnLalP34dhtBhwOHs4Q01/f1b3b42sMcgZ2YB/6FeIUZwlYDfrr/emAJ6u3amcS2zWPRmT7A4dteLjo4ifcPVgsuvI0XwXdEEbo7JZJZm6CVlZFhM7AfTc+8z5itViHKr5IcMlrMRE7FNJl+wC/O5VOjWw6jaobFru4wqs3kgdmgdwtxNFB0rGVLrQC+8+QfKPav8molqW3o4EYeK9hY4oqAFkCVVp+lNSdDLbscTvN/oemynFuH/9SKmASxntOGoEoiUQWZR/dW2xwXL+/g8zWdByg/4mSbEPLgFgNFW42UBwx+IGjIhtum210orHoiooyhYiM0sfhIeVVqBpo7BrnWsbiWLE7h7uepzTe2Cmqi3x/Be0/gJIeTES+jHAOhhWl3UQrogAakYXCMD0wZEpi70XT3wkg9gYDLDyJ3BbV/ILJLOjQYEw5eF9Xy+5FBynZjzScMOgF9/62tQuUabcx/ca8ZVYijSKMbZ8QZLz40gf5IulYQ15xjkDVO9NprUgt6U1p+RftAEYvJdDggGuheQ74BA9Jzjyuw+PKb/HnhfIcPxZC3YKFsw8JpeKiPhXkoXBEQNlh/hwsz/Wx/9hH6QmTLf3Spamzs/8blBVn/XI2fintZDIpGmOCRUBy0umC6dC0fO7DUeAhJ6PSorQQDPppnaeEEYZLxN0mAssQ2TG64aYPiDTJ7lC65CCsbBWVRgQTBKrq6+JLoGnyYKO1PgD4radaFLgPVKJHMtVXP45yhLBjigYZ/WAlXVpa4ir7rUqkNZ5ZBAiku/5H/EP3L2ojajIfQd/xwnjFHL75Sy9WeGdHIigishM5zcb893D21PFsTGFFateyPLTXcS28C2nNnQFTdvwnu8eboV2rPaFnVYFUbnxggAZU9HtOwMFpVtilvOB9q/eYwh+skndbUDD4k29dEOqy/IiQ qzY+5qta sxdWiji8j1HkgWH0wfZmCED67xpnTtULMMIB/WZqV6FXZe3HzXqKkgMbEMFXkmdQu1txxq7VnlGnAPrvc1YzA93SD/F5mfZC87qcezzFhYC4uZQ9xmfHCANoqm6CG7NG97RqJ3R/7Elegem88R0w+bbx9p4ykGDfGRRTMlZLfVEzmuZmQjPdQIMpNgIStSchxvYCNOVYsDAnW1vSAhLpZWFeTIQ== 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: List-Subscribe: List-Unsubscribe: Currently page_counter tracks failcnt for counters used by v1 and v2 controllers. However failcnt is only exported for v1 deployment and thus there is no need to maintain it in v2. The oom report does expose failcnt for memory and swap in v2 but v2 already maintains MEMCG_MAX and MEMCG_SWAP_MAX event counters which can be used. Signed-off-by: Shakeel Butt --- include/linux/page_counter.h | 4 +++- mm/hugetlb_cgroup.c | 31 ++++++++++++++----------------- mm/memcontrol.c | 12 ++++++++++-- mm/page_counter.c | 4 +++- 4 files changed, 30 insertions(+), 21 deletions(-) diff --git a/include/linux/page_counter.h b/include/linux/page_counter.h index 46406f3fe34d..e4bd8fd427be 100644 --- a/include/linux/page_counter.h +++ b/include/linux/page_counter.h @@ -28,12 +28,13 @@ struct page_counter { unsigned long watermark; /* Latest cg2 reset watermark */ unsigned long local_watermark; - unsigned long failcnt; + unsigned long failcnt; /* v1-only field */ /* Keep all the read most fields in a separete cacheline. */ CACHELINE_PADDING(_pad2_); bool protection_support; + bool track_failcnt; unsigned long min; unsigned long low; unsigned long high; @@ -58,6 +59,7 @@ static inline void page_counter_init(struct page_counter *counter, counter->max = PAGE_COUNTER_MAX; counter->parent = parent; counter->protection_support = protection_support; + counter->track_failcnt = false; } static inline unsigned long page_counter_read(struct page_counter *counter) diff --git a/mm/hugetlb_cgroup.c b/mm/hugetlb_cgroup.c index bb9578bd99f9..58e895f3899a 100644 --- a/mm/hugetlb_cgroup.c +++ b/mm/hugetlb_cgroup.c @@ -101,10 +101,9 @@ static void hugetlb_cgroup_init(struct hugetlb_cgroup *h_cgroup, int idx; for (idx = 0; idx < HUGE_MAX_HSTATE; idx++) { - struct page_counter *fault_parent = NULL; - struct page_counter *rsvd_parent = NULL; + struct page_counter *fault, *fault_parent = NULL; + struct page_counter *rsvd, *rsvd_parent = NULL; unsigned long limit; - int ret; if (parent_h_cgroup) { fault_parent = hugetlb_cgroup_counter_from_cgroup( @@ -112,24 +111,22 @@ static void hugetlb_cgroup_init(struct hugetlb_cgroup *h_cgroup, rsvd_parent = hugetlb_cgroup_counter_from_cgroup_rsvd( parent_h_cgroup, idx); } - page_counter_init(hugetlb_cgroup_counter_from_cgroup(h_cgroup, - idx), - fault_parent, false); - page_counter_init( - hugetlb_cgroup_counter_from_cgroup_rsvd(h_cgroup, idx), - rsvd_parent, false); + fault = hugetlb_cgroup_counter_from_cgroup(h_cgroup, idx); + rsvd = hugetlb_cgroup_counter_from_cgroup_rsvd(h_cgroup, idx); + + page_counter_init(fault, fault_parent, false); + page_counter_init(rsvd, rsvd_parent, false); + + if (!cgroup_subsys_on_dfl(hugetlb_cgrp_subsys)) { + fault->track_failcnt = true; + rsvd->track_failcnt = true; + } limit = round_down(PAGE_COUNTER_MAX, pages_per_huge_page(&hstates[idx])); - ret = page_counter_set_max( - hugetlb_cgroup_counter_from_cgroup(h_cgroup, idx), - limit); - VM_BUG_ON(ret); - ret = page_counter_set_max( - hugetlb_cgroup_counter_from_cgroup_rsvd(h_cgroup, idx), - limit); - VM_BUG_ON(ret); + VM_BUG_ON(page_counter_set_max(fault, limit)); + VM_BUG_ON(page_counter_set_max(rsvd, limit)); } } diff --git a/mm/memcontrol.c b/mm/memcontrol.c index 36b2dfbc86c0..030fadbd5bf2 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -1572,16 +1572,23 @@ void mem_cgroup_print_oom_meminfo(struct mem_cgroup *memcg) /* Use static buffer, for the caller is holding oom_lock. */ static char buf[SEQ_BUF_SIZE]; struct seq_buf s; + unsigned long memory_failcnt; lockdep_assert_held(&oom_lock); + if (cgroup_subsys_on_dfl(memory_cgrp_subsys)) + memory_failcnt = atomic_long_read(&memcg->memory_events[MEMCG_MAX]); + else + memory_failcnt = memcg->memory.failcnt; + pr_info("memory: usage %llukB, limit %llukB, failcnt %lu\n", K((u64)page_counter_read(&memcg->memory)), - K((u64)READ_ONCE(memcg->memory.max)), memcg->memory.failcnt); + K((u64)READ_ONCE(memcg->memory.max)), memory_failcnt); if (cgroup_subsys_on_dfl(memory_cgrp_subsys)) pr_info("swap: usage %llukB, limit %llukB, failcnt %lu\n", K((u64)page_counter_read(&memcg->swap)), - K((u64)READ_ONCE(memcg->swap.max)), memcg->swap.failcnt); + K((u64)READ_ONCE(memcg->swap.max)), + atomic_long_read(&memcg->memory_events[MEMCG_SWAP_MAX])); #ifdef CONFIG_MEMCG_V1 else { pr_info("memory+swap: usage %llukB, limit %llukB, failcnt %lu\n", @@ -3622,6 +3629,7 @@ mem_cgroup_css_alloc(struct cgroup_subsys_state *parent_css) page_counter_init(&memcg->memory, &parent->memory, memcg_on_dfl); page_counter_init(&memcg->swap, &parent->swap, false); #ifdef CONFIG_MEMCG_V1 + memcg->memory.track_failcnt = !memcg_on_dfl; WRITE_ONCE(memcg->oom_kill_disable, READ_ONCE(parent->oom_kill_disable)); page_counter_init(&memcg->kmem, &parent->kmem, false); page_counter_init(&memcg->tcpmem, &parent->tcpmem, false); diff --git a/mm/page_counter.c b/mm/page_counter.c index af23f927611b..661e0f2a5127 100644 --- a/mm/page_counter.c +++ b/mm/page_counter.c @@ -121,6 +121,7 @@ bool page_counter_try_charge(struct page_counter *counter, { struct page_counter *c; bool protection = track_protection(counter); + bool track_failcnt = counter->track_failcnt; for (c = counter; c; c = c->parent) { long new; @@ -146,7 +147,8 @@ bool page_counter_try_charge(struct page_counter *counter, * inaccuracy in the failcnt which is only used * to report stats. */ - data_race(c->failcnt++); + if (track_failcnt) + data_race(c->failcnt++); *fail = c; goto failed; } From patchwork Fri Feb 28 07:58:08 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shakeel Butt X-Patchwork-Id: 13995828 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2CA5BC19776 for ; Fri, 28 Feb 2025 07:58:47 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B391A280003; Fri, 28 Feb 2025 02:58:46 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id AC172280002; Fri, 28 Feb 2025 02:58:46 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9B032280003; Fri, 28 Feb 2025 02:58:46 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 7CB8C280002 for ; Fri, 28 Feb 2025 02:58:46 -0500 (EST) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 0A35AC046B for ; Fri, 28 Feb 2025 07:58:46 +0000 (UTC) X-FDA: 83168601852.24.A7AE72A Received: from out-179.mta0.migadu.com (out-179.mta0.migadu.com [91.218.175.179]) by imf12.hostedemail.com (Postfix) with ESMTP id 56E9F4000B for ; Fri, 28 Feb 2025 07:58:44 +0000 (UTC) Authentication-Results: imf12.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=a4goRKM7; spf=pass (imf12.hostedemail.com: domain of shakeel.butt@linux.dev designates 91.218.175.179 as permitted sender) smtp.mailfrom=shakeel.butt@linux.dev; dmarc=pass (policy=none) header.from=linux.dev ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1740729524; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=BK/lHOWMvSnS+WIRroS9/stVhRR6z5AG9NC04iFYhYg=; b=HgfcmrkARNjKIX8BVsNo37sKgU6RUsc8F+wvXru4lrrozmaFx1bD7/PY+ELqlYimUie/Cx JPom4Ubjhnqu3Y4Sjxulk7qQldzIkhNYePMdeyz31A+MTHAme5kbkJXOEfvR3OVNL5BQ/S 6hzvir+y+Kry/ssdLzjdbMxUgvlFgog= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1740729524; a=rsa-sha256; cv=none; b=Igy1nBjsX6bEHLmnevRJlILHsbFGGYYrAjdI725EAr1ehmyFUiNgAGoRLTT/v3vqxdrTBk GKxTHyru2y6I32B9U1vnLk7LXlVoJnONdeFC4BVOyFg2qRxFr4TFPIwwzBbS9iRFn5EZkD /BWmhf/VgX+BYDUkdmZfOk2VNfqBDFU= ARC-Authentication-Results: i=1; imf12.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=a4goRKM7; spf=pass (imf12.hostedemail.com: domain of shakeel.butt@linux.dev designates 91.218.175.179 as permitted sender) smtp.mailfrom=shakeel.butt@linux.dev; dmarc=pass (policy=none) header.from=linux.dev X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1740729521; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=BK/lHOWMvSnS+WIRroS9/stVhRR6z5AG9NC04iFYhYg=; b=a4goRKM7J4ZIFDTPgn+GjDlc39QJ1F7e412TgXrydAts3sFCMK9dW4A0cowefVceam44tp K3tH5jwmqqjoQI8//8jeZpIbMkvjfX4T0xF1SsSOoa542AKlyodxF5cSdAiGkuD8KaGpJn j3xB5Zl+kCBqKe9Kkn2PM8DhkM1po7Y= From: Shakeel Butt To: Andrew Morton Cc: Johannes Weiner , Michal Hocko , Roman Gushchin , Muchun Song , linux-mm@kvack.org, cgroups@vger.kernel.org, linux-kernel@vger.kernel.org, Meta kernel team Subject: [PATCH 3/3] page_counter: reduce struct page_counter size Date: Thu, 27 Feb 2025 23:58:08 -0800 Message-ID: <20250228075808.207484-4-shakeel.butt@linux.dev> In-Reply-To: <20250228075808.207484-1-shakeel.butt@linux.dev> References: <20250228075808.207484-1-shakeel.butt@linux.dev> MIME-Version: 1.0 X-Migadu-Flow: FLOW_OUT X-Stat-Signature: 6gq4hgtq7uf9e1zgwx16posrendiujmz X-Rspamd-Queue-Id: 56E9F4000B X-Rspam-User: X-Rspamd-Server: rspam01 X-HE-Tag: 1740729524-526781 X-HE-Meta: U2FsdGVkX18onp5uAtbIRu/8u60CJl0uud2oCqz9LnXymrgDMrk1y1W0jjyxv+e314+IohQodHFgUBS63D7zhvRcnxm8DyhGFl26pNsEoZ1h7/Kp55Pb6qMn+VRCQNkLs8qB3hGBedn1cGoB7FzmcXZPMb8FjdDbs+CWwZUm72K0xLMedY9MwCI7+MgYQvlEFOqSIFs1VsTRw1mwmpwy6eA//JYbTJJRSQYcxGApljgPt5Bo4dzMEoir3ywYrH7KqoOluwUr5ybthOPKDmh5LmYfdQMGwN4Rjr6jL0ZH0aHAusCxov/3M/7VOMiTVRp9pK9AHgOlkkCfa4m/NidOHHKUNcZeY9yyxXr/CI2R8NWHUxKDvtJdo6//Y+UIKMGga6ilDSHMfOKEN2Kqt70ZHrvhdqS/ySg7kMYPUuDuB0L4K5WKF6TEe3fMYKkYafrstaYzQ34c0axWwc/aa6Dn8L3Ih+UVtxbvP/EONyWwfeBEiK9qQHJF09pNFvLmlmvozlDmlgXJSKgUAeplAytumTSn3hHo4XT31g8QYutHaW7CX5Of2xzYEzsa925FKYwO7T0xU0ODUOXC9VxL8hu74Nq8+CIDiPX9K+K5/unMogdyxpkkWqldAPAfVuEp0C0QGzAUxIqXaNZ9kxmGQiRh3MGPiVYXoyL4Z0oL3dJLe5dnwDWDrfJTNcSIKD/f1cqkwNJvgLAECZHo9lIXR2q/5csZSQWMfRferrlns8IyfnwH+0SQGWiIfTjlyne2z6/MYJDYGD03XhZKHHK4a7HFrLUdN2avU6mfBvJbMYYYVNYwu5HxhzQkLCGOWvR/PDgd6nsHlQuqV86vkCzRO8M9w/lkPeRGA1DHXsWZ7peFQogvhQAAXKiRAMmADpvqWcwjpsR25fzpT64mNNP5cTX2gEpkN+zd7CQud1TGjog5s0FdoxIeNKzbh8vUXQUx1S3XN9jeDXtLCGscuO0equu mvK/G0/7 n6bFJ97+nrvsz0OHOzt4WmjQbvXVjulcAOEInUwuZAuifT6ViL3s4j1h2xorkMs7GD+y/AleheDESbWh49qaho09oyLJMSAh/ug2hx3/9a3fDUAMyT/aMpA4ng6AXGX3lDVKPZNdRPuLtACR4T2VaEPxCOYCxVeCm6F3L5PpJlTggcPWS/ANe3/xmDfAO8Fe1Fxv1Pyf5QFLmTYT8NRXcb8muPEbDzf3uD/D1 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: List-Subscribe: List-Unsubscribe: The struct page_counter has explicit padding for better cache alignment. The commit c6f53ed8f213a ("mm, memcg: cg2 memory{.swap,}.peak write handlers") added a field to the struct page_counter and accidently increased its size. Let's move the failcnt field which is v1-only field to the same cacheline of usage to reduce the size of struct page_counter. Signed-off-by: Shakeel Butt --- include/linux/page_counter.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/include/linux/page_counter.h b/include/linux/page_counter.h index e4bd8fd427be..d649b6bbbc87 100644 --- a/include/linux/page_counter.h +++ b/include/linux/page_counter.h @@ -9,10 +9,12 @@ struct page_counter { /* - * Make sure 'usage' does not share cacheline with any other field. The - * memcg->memory.usage is a hot member of struct mem_cgroup. + * Make sure 'usage' does not share cacheline with any other field in + * v2. The memcg->memory.usage is a hot member of struct mem_cgroup. */ atomic_long_t usage; + unsigned long failcnt; /* v1-only field */ + CACHELINE_PADDING(_pad1_); /* effective memory.min and memory.min usage tracking */ @@ -28,7 +30,6 @@ struct page_counter { unsigned long watermark; /* Latest cg2 reset watermark */ unsigned long local_watermark; - unsigned long failcnt; /* v1-only field */ /* Keep all the read most fields in a separete cacheline. */ CACHELINE_PADDING(_pad2_);