From patchwork Mon Oct 14 10:58:10 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ryan Roberts X-Patchwork-Id: 13834671 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 73677D1A43B for ; Mon, 14 Oct 2024 10:59:39 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 075F96B0089; Mon, 14 Oct 2024 06:59:39 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 04B306B008A; Mon, 14 Oct 2024 06:59:38 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E2DEB6B008C; Mon, 14 Oct 2024 06:59:38 -0400 (EDT) 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 C58056B0089 for ; Mon, 14 Oct 2024 06:59:38 -0400 (EDT) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id E44C1160D11 for ; Mon, 14 Oct 2024 10:59:29 +0000 (UTC) X-FDA: 82671911910.02.9929020 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by imf04.hostedemail.com (Postfix) with ESMTP id 8DCA540005 for ; Mon, 14 Oct 2024 10:59:28 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=none; spf=pass (imf04.hostedemail.com: domain of ryan.roberts@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=ryan.roberts@arm.com; dmarc=pass (policy=none) header.from=arm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1728903434; 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; bh=VpicSstlstrg5d6N29OH0psgAbIQb3i7oiCjbYwYKQQ=; b=PLYJwZo6gwz4+WiFr8Wnkitb7K6qzK8SXwjVN0wJcwkQN2t+/RMe9bNHsE7ZDeXGd5koF4 Y6q4N4mIHVWL7biDqkygAvJlPnMj2EAAZ1rkaq6fdMKqr1F42jSchoBO0m9dAtgReYqx57 x0+T2DrPGCFX/i6rngFoMglgDpm4hmk= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1728903434; a=rsa-sha256; cv=none; b=w8uZK/Y18h2378Y/rjvGPm19A9oLf4VAfjY6aH9U5MzQsyJA1jAkOv0ufj2Bi/hNZAR8sP ly4xYZfX6xT4zn3upEsyXp4npkUh5SRjBvPvfsp8Jq9GeFcc3A237Sj4aKt92wuHOZF7uV 6++sZXfbLB5i69KBReGvXJQ6FqkQrGw= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=none; spf=pass (imf04.hostedemail.com: domain of ryan.roberts@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=ryan.roberts@arm.com; dmarc=pass (policy=none) header.from=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 8FB151424; Mon, 14 Oct 2024 04:00:05 -0700 (PDT) Received: from e125769.cambridge.arm.com (e125769.cambridge.arm.com [10.1.196.27]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id E9C283F51B; Mon, 14 Oct 2024 03:59:32 -0700 (PDT) From: Ryan Roberts To: Andrew Morton , Anshuman Khandual , Ard Biesheuvel , Catalin Marinas , David Hildenbrand , Greg Marsden , Ivan Ivanov , Johannes Weiner , Kalesh Singh , Marc Zyngier , Mark Rutland , Matthias Brugger , Michal Hocko , Miroslav Benes , Roman Gushchin , Shakeel Butt , Will Deacon Cc: Ryan Roberts , cgroups@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [RFC PATCH v1 03/57] mm/memcontrol: Fix seq_buf size to save memory when PAGE_SIZE is large Date: Mon, 14 Oct 2024 11:58:10 +0100 Message-ID: <20241014105912.3207374-3-ryan.roberts@arm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20241014105912.3207374-1-ryan.roberts@arm.com> References: <20241014105514.3206191-1-ryan.roberts@arm.com> <20241014105912.3207374-1-ryan.roberts@arm.com> MIME-Version: 1.0 X-Stat-Signature: eynhgpszzqhe5ckbwoz3smf47pknt4ro X-Rspamd-Queue-Id: 8DCA540005 X-Rspam-User: X-Rspamd-Server: rspam08 X-HE-Tag: 1728903568-861662 X-HE-Meta: U2FsdGVkX18XNc0QUoA7sHjis0JkxQp+VSyFqQtKnidhdo1smSJCv+Hl6sgAoDbpZf/6/+41k5VUKobpYaM76R8tVccDhdvgbO2lZ90S3Gh2NznCtFuEzqd1kEjs/PXmZvIufPYYisxnTrmCV3k/Kw3e/XdHExmCGJgmN/biMoufRQKCtpvAoEpumPWmVKt6oDH9dfol12olnXfxLPKcwYzOVsBB7QJk8SXL62aPGr3nFTyUrdxaCOKfp2sYP+tdQcqdoHy5LF1BauuVXU0tPl8kc7YQ1+dGzV1EcmkejhKP1rAFafnA+wtLCKJrftnxJotxOvIWm78QFVZiNeN2vjk6kLpgBccRLotEcPoLQIuunkwj71k3NGooKXpCY26fpmUQTu83xzDhWHhox7uf5jTAEyhsfvkbp2PSYzpVzYbB+HumK2dCtOJFKoHa7btkS4GuV1mMdbKq+KKFpKqygfii+eR6fZkSMMkDgppMwn8iinh3OlFAQNHMT0vJEwimKi9F08K00Z+pIMSoZoLEUvk2I2ajZSPi+GmSg/GZdHmFRBLTVXp48UGO/xfbRF2Ln3EEJiOybmXM013xEZmSm3rKdpC30ag+wxF9dlRa7pcKYQD/sVUhajZ85CmT2/D5j1EdqFiXkiAZsO3FEzCaWjaLT7A8Ja8woloLw0gEuxjsfEhwEgDiXVUlo6hBNsmMc4M6DCujjOPiIOyilOiioe+GcYuubU/YRzQiqpgKAqqT41bDqRLI7c1tK50iWN1SKsxWlQP/itMwIpVuMOxKST0gH07LT5rG1X/5qOlWH/s6724/wUx0VvM9bSLevVblxNa/R8qfASxrjTSUbFBCYwkTU0OnDijA+ejTwAyBL/FZkz4TL/Wqmky0dp4QW6Aujos8O6yqc78ryIZ7nRDXSGFR1Elj478P4rkdDDnN9K4F6NFf+6mVD5DyWTGihB4wA45KZikSXNeBv8TOpr6 0r34HfKZ WNWpoxxGxhqJw13FQDhsKERIrIZjQ0zZ+mdTVNntR5YVZ1SBMQB/MvaDdkXwskQXlMIbserFtWX6uDJPQuH0X565nAKDGYr0+nvXV6tb9sad0rYXblEfTAc19YYS2mSMKIrvjMC9HVIFimz+ZQwbiV10tFW6beCy8EyNVt1ZUihQSgiCjFHvWS9RL7d9y4ggtb3URmETSFAs1gk6ONQpFtcPUPZolJaF0b68U 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: Previously the seq_buf used for accumulating the memory.stat output was sized at PAGE_SIZE. But the amount of output is invariant to PAGE_SIZE; If 4K is enough on a 4K page system, then it should also be enough on a 64K page system, so we can save 60K om the static buffer used in mem_cgroup_print_oom_meminfo(). Let's make it so. This also has the beneficial side effect of removing a place in the code that assumed PAGE_SIZE is a compile-time constant. So this helps our quest towards supporting boot-time page size selection. Signed-off-by: Ryan Roberts Acked-by: Johannes Weiner Acked-by: Shakeel Butt Acked-by: Michal Hocko Acked-by: Roman Gushchin --- ***NOTE*** Any confused maintainers may want to read the cover note here for context: https://lore.kernel.org/all/20241014105514.3206191-1-ryan.roberts@arm.com/ mm/memcontrol.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/mm/memcontrol.c b/mm/memcontrol.c index d563fb515766b..c5f9195f76c65 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -95,6 +95,7 @@ static DECLARE_WAIT_QUEUE_HEAD(memcg_cgwb_frn_waitq); #define THRESHOLDS_EVENTS_TARGET 128 #define SOFTLIMIT_EVENTS_TARGET 1024 +#define SEQ_BUF_SIZE SZ_4K static inline bool task_is_dying(void) { @@ -1519,7 +1520,7 @@ void mem_cgroup_print_oom_context(struct mem_cgroup *memcg, struct task_struct * void mem_cgroup_print_oom_meminfo(struct mem_cgroup *memcg) { /* Use static buffer, for the caller is holding oom_lock. */ - static char buf[PAGE_SIZE]; + static char buf[SEQ_BUF_SIZE]; struct seq_buf s; lockdep_assert_held(&oom_lock); @@ -1545,7 +1546,7 @@ void mem_cgroup_print_oom_meminfo(struct mem_cgroup *memcg) pr_info("Memory cgroup stats for "); pr_cont_cgroup_path(memcg->css.cgroup); pr_cont(":"); - seq_buf_init(&s, buf, sizeof(buf)); + seq_buf_init(&s, buf, SEQ_BUF_SIZE); memory_stat_format(memcg, &s); seq_buf_do_printk(&s, KERN_INFO); } @@ -4158,12 +4159,12 @@ static int memory_events_local_show(struct seq_file *m, void *v) int memory_stat_show(struct seq_file *m, void *v) { struct mem_cgroup *memcg = mem_cgroup_from_seq(m); - char *buf = kmalloc(PAGE_SIZE, GFP_KERNEL); + char *buf = kmalloc(SEQ_BUF_SIZE, GFP_KERNEL); struct seq_buf s; if (!buf) return -ENOMEM; - seq_buf_init(&s, buf, PAGE_SIZE); + seq_buf_init(&s, buf, SEQ_BUF_SIZE); memory_stat_format(memcg, &s); seq_puts(m, buf); kfree(buf);