From patchwork Wed Apr 16 18:06:52 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Usama Arif X-Patchwork-Id: 14054393 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 CFE59C369C5 for ; Wed, 16 Apr 2025 18:06:59 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E7FC16B00A8; Wed, 16 Apr 2025 14:06:57 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E2FC16B00A9; Wed, 16 Apr 2025 14:06:57 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id CF7636B00AA; Wed, 16 Apr 2025 14:06:57 -0400 (EDT) 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 B2F496B00A8 for ; Wed, 16 Apr 2025 14:06:57 -0400 (EDT) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id D1237B1994 for ; Wed, 16 Apr 2025 18:06:58 +0000 (UTC) X-FDA: 83340688116.20.C34BB95 Received: from mail-qk1-f180.google.com (mail-qk1-f180.google.com [209.85.222.180]) by imf08.hostedemail.com (Postfix) with ESMTP id 0C5FB160004 for ; Wed, 16 Apr 2025 18:06:56 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=b1AALV2H; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf08.hostedemail.com: domain of usamaarif642@gmail.com designates 209.85.222.180 as permitted sender) smtp.mailfrom=usamaarif642@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1744826817; a=rsa-sha256; cv=none; b=OYGZ7WRSvUdnFdOeBs6xIvI5KphrRNdfieMYs+I1qZTWwO3Smngl8FykYa0xBheXfD8bwz SxRpvbninOXAvS+L6SUA/eQpMNSA+wia/tcFEglRshFa9ZtJkKEsPmW4szueuPoyKs7bSr 7wRzw7X8JptINuaXxf2+Mz3uXDglKkI= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=b1AALV2H; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf08.hostedemail.com: domain of usamaarif642@gmail.com designates 209.85.222.180 as permitted sender) smtp.mailfrom=usamaarif642@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1744826817; 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:references:dkim-signature; bh=5bBGNDXHf0wcTGsAhP/84UjjUq9vBjHxLqzgERfSJkQ=; b=l8hkMKuU4Pby/9dTHey5ACHd7Q0xx9xRzKq1suVbVATHE7I/DGmw/hPDXslxNfa4Jfjoiz Sx1VGgp5pTheQW6PMEA4HVVFVTFCWBSZLrb5YQGDGrIbOL/JkqLsWZk/Qi1c8Q6h60NS0p tnT2UjlLJ98sid2L+T40BJl2ZnqgFRg= Received: by mail-qk1-f180.google.com with SMTP id af79cd13be357-7c5568355ffso571592185a.0 for ; Wed, 16 Apr 2025 11:06:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744826816; x=1745431616; darn=kvack.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=5bBGNDXHf0wcTGsAhP/84UjjUq9vBjHxLqzgERfSJkQ=; b=b1AALV2HHwayuPJckyWcctbD5ZW38Y6vO6vO4kaLPjWuxi+rGpp5K7WTO7kFeO5o+h C47fMqbSsQNM+dG0RcTj4SDX3mC59tDv+JxDrhC9151sJfBr4yEeD/tvBLujncQPdMlw 7J5Ht5wMYCp0OqAI5JFKwO7aJnZBz18I+Pi3VfAR4C0BKG8OnEF0LJN6iHwGrgiQHXIo XmVFsL0B6kk508zgAfCAnlA8z1jN1TxIRGmwesMJSgt567ZloQpJWKIWkCWiSTD/4DTj GbOA0mumoOQSYGDBr2eDj3TZxWPMa6I9B1uOhWoR6grJU4vN3+nbUK8ebPS5UEosS/1b e7Fw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744826816; x=1745431616; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=5bBGNDXHf0wcTGsAhP/84UjjUq9vBjHxLqzgERfSJkQ=; b=iZWqmYK2Pk15BeZYBX2nJE9sVQapAoQOMICq0cvHhjp0RUbooS+lmCZLTio5MMyLy1 TKmHEzplObPKQqFZkeC43plVaGR+d87ABU7SOYnI0CkTyq2MJ2xj2ML1Y3PKhZKLwnXj sw4LsYr/44YqegG5Zax+ynWuwpyWpgY3NLakIOFO/bpIzDqsd5rUlTNVjOYRa3MoaJ7f D9SBjO9iFJkXbLRlfHUSueNZNJ9IvGhCIkkuCw2MsoPNpZhmrUbTnX7EdEzaIX6FWcL1 +3BfYkTmXXElePnDppouSRbXFea4PQtTDUVfbLu5rTShj17UsXMN2P20HSZbYQ6K4ly6 LUaA== X-Forwarded-Encrypted: i=1; AJvYcCV6voNwh+77QE21xSLleohKKGwEmfneQHOlqJQ7xI2Jno66/qCxahhYwOdpuLzQ65Q9CaBAHWTYDQ==@kvack.org X-Gm-Message-State: AOJu0Yw2na5YwCfmhOqxsKWmb1oibfYckhYQMuGIvOKhCpWQSWgP6N3w cJT1aJTzSdl7EllfEPbuCWaSWooHsCeq3oivkJOnJGuhqo6wwmV5 X-Gm-Gg: ASbGncuhukR0DboEa886UpDcaOtExUgFn2KaGBb3RC9ssZdpGSjL/4J6dY01dnewRvT eBjyJXo5huMYHEWkvee4XxmOebwsFxUDII9ALFtsZfuqXo/8wcpvWBi2bvHlHsWNImVj9xetRPL F6l5F2//vwIaLuV8r9qII+UzZMNf1ptAUX8azPQCyA4iXbvDHCqwDa4icc4+K6bsGExtbF9YM2t dCpZeLCzfHIaKOyOXGJkFb3ISgWGC2rfdmDU/JiV8zOzYCnfX6d9gNAhJlBMwqzYbRQpy5dcqJw qPMgxbAelTW/YWWCe2jTsCWOwYn9UPRzpreoZg== X-Google-Smtp-Source: AGHT+IF8GjF861ZlG5eJfPMP6n3Yo9HbzAs3F1ABqQuYTpMtFeymvRZMNgLh1ooSe/pUOJlw11fzCw== X-Received: by 2002:a05:620a:40c8:b0:7c7:b5d0:da63 with SMTP id af79cd13be357-7c91900180emr451290585a.25.1744826816061; Wed, 16 Apr 2025 11:06:56 -0700 (PDT) Received: from localhost ([2a03:2880:20ff:6::]) by smtp.gmail.com with ESMTPSA id af79cd13be357-7c7a88b6b0asm1096843585a.0.2025.04.16.11.06.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Apr 2025 11:06:55 -0700 (PDT) From: Usama Arif To: Andrew Morton , surenb@google.com, linux-mm@kvack.org Cc: hannes@cmpxchg.org, shakeel.butt@linux.dev, linux-kernel@vger.kernel.org, kernel-team@meta.com, Usama Arif Subject: [PATCH] alloc_tag: introduce Kconfig option for default compressed profiling Date: Wed, 16 Apr 2025 19:06:52 +0100 Message-ID: <20250416180653.3438158-1-usamaarif642@gmail.com> X-Mailer: git-send-email 2.47.1 MIME-Version: 1.0 X-Rspamd-Queue-Id: 0C5FB160004 X-Rspam-User: X-Rspamd-Server: rspam07 X-Stat-Signature: 784u9ai5z97u7i5jhbjp4p5ymwr1muhy X-HE-Tag: 1744826816-32620 X-HE-Meta: U2FsdGVkX1+8f42rR7jab9MoYl6f9RCpfOp8R8g9BJsSwrJEW+/AWon+P/gwwKgATsIR1RaolzU51pv6ILZSyOz7nu1KCKIjpxxuWJeIpLia4TwxX8r9gDtR8l53x6mV9KNaNrv2xyzQOfJ7KJVGczKaOAh0hLSHD/y64fJXIaRhWy+yQi8VYoW5oRJiVhtF4pMovcRwUyLoxSKKfWGcKp3t4tQRgSKg3WMDTLK8pxvL207sCxq5GJurmi/xb92u8NjtmtDI8BnG9seHb+SgzMrA/kOs6ILkGJam8I/xQoUFPj8XzkLqHp5NjIPIJlFy6wSlcFfOH30w9asE0A2pTqWecSKh6NWvBw1QGqj+qbc8MHWvrQ1B+8IDxuBwZ2nF70vGkXSGAN0aA8316pmULui7KUYvgVPaeGlLF4Jt+tlrFry7CVP5HkNewhfvC3n36Bm+MHNcXmUCv0+IvVaF49fin9JXUdx7LOB51Vg6SBzidGlRDlgCnRY3pc2Lf66JwNeaiF4pe5hsEZ/9gJUuXZWqdg0sQb11nrJfqglY08iAqzfF1W8Psj0oBjmZqkaaE3AvmAhQDX0Ztb3olcGTiGfFIoe6xLLGCrjsTsaFwI2ri7d+paOmF6tte3v+IMaJQ/9kHeWPpsF/FD73boQROp5nwFz6eqzRn3tKWBRTqe5HQIoVWcX5SIQuEllsLX8IBGV7joaEOHXWrxgItnbRJGUFFplKSedqmF9g/J9aDWdwmFTy52ntpxvd5Ka6N6aLuAPOJwIypww8pbt7FBT3B5JN+U9aJRncoXDw9CuUONQqrPYKApnUmQ+Jq/y/aNx+FaZNItkvKKFbnBBQF2TNKi0IHxqU25uhVfmO0BLnQM9FIoU6EkFsZUVrcJ8zZiaHXMzP61BEt8ON9AtHIeHHx5jo8DzTpCBLshMPQSkHMujFAORgp9lveESkmbkJH+o0V7p8HXgJyF/iBRVE0En aQyc9C1s /+DjrA2MbU+MbUw1PPxW8zma90RWkKuwqK3mlAzn8rk6pzHJ6/MMmpyeoNgo4rnoYaAV4AVS17dTVAgY43HulW7Yf8RDe2xXZcPyyMpCa72pvKS6bmaCEZaIN8EfDGqlKtZSuiYA0JUU6FuCUuKv9QneQNmhlaqsk3aKJBgucy+SBpk1HKf0sxeAVFWPkNUTb3suTQ2/9IwGZ/TVoyU4YGFrQBugR0gLzZ7NbS8Tf7xuqp/GQXOIwJi7iCyYxuxHHjYE4EJTtyf1V1PmGhpUxEdPxL14wFx7nm7DXZRzA2BpliIrrQnOoVS2A6xYnZcZda2PPUfu00lq4fb043Jzh1bjKBdM9wHorKYEQnkmGrc/wa8OwT+fOJUr3HzUUVrljaNn4MncnwK/xgjaLtTKx9oxhpUH69LM4Gx1FhbuspV+wflC+UGEdWk0Rz+Fls7rcEXkXATDTCw+SlMME2i3COK7wI3zMlfrSGw+beU3dzQ2dHBmAWO5onaIObK32MQnCWm289Nq5sSLwr7DLOhBXxZ6UPn+Yu9PYZ8LjQbj53cpIwvo= 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: With this Kconfig option enabled, the kernel stores allocation tag references in the page flags by default. There are 2 reasons to introduce this: - As mentioned in [1], compressed tags dont have system memory overhead and much lower performance overhead. It would be preferrable to have this as the default option, and to be able to switch it at compile time. Another option is to just declare the static key as true by default? - As compressed option is the best one, it doesn't make sense to have to change both defconfig and command line options to enable memory allocation profiling. Changing commandline across a large number of services can result in signifcant work, which shouldn't be needed if the kernel defconfig needs to be changed anyways. [1] https://lore.kernel.org/all/20241023170759.999909-7-surenb@google.com/T/#m0da08879435f7673eaa10871a6e9d1be4f605ac8 Signed-off-by: Usama Arif --- include/linux/pgalloc_tag.h | 4 ++++ lib/Kconfig.debug | 5 +++++ lib/alloc_tag.c | 4 ++++ 3 files changed, 13 insertions(+) diff --git a/include/linux/pgalloc_tag.h b/include/linux/pgalloc_tag.h index c74077977830..0226059bcf00 100644 --- a/include/linux/pgalloc_tag.h +++ b/include/linux/pgalloc_tag.h @@ -16,7 +16,11 @@ extern unsigned long alloc_tag_ref_mask; extern int alloc_tag_ref_offs; extern struct alloc_tag_kernel_section kernel_tags; +#ifdef CONFIG_MEM_ALLOC_PROFILING_COMPRESSED_ENABLED_BY_DEFAULT +DECLARE_STATIC_KEY_TRUE(mem_profiling_compressed); +#else DECLARE_STATIC_KEY_FALSE(mem_profiling_compressed); +#endif typedef u16 pgalloc_tag_idx; diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug index 9fe4d8dfe578..66d8995f3514 100644 --- a/lib/Kconfig.debug +++ b/lib/Kconfig.debug @@ -1028,6 +1028,11 @@ config MEM_ALLOC_PROFILING_ENABLED_BY_DEFAULT default y depends on MEM_ALLOC_PROFILING +config MEM_ALLOC_PROFILING_COMPRESSED_ENABLED_BY_DEFAULT + bool "store page allocation tag references in the page flags by default" + default y + depends on MEM_ALLOC_PROFILING + config MEM_ALLOC_PROFILING_DEBUG bool "Memory allocation profiler debugging" default n diff --git a/lib/alloc_tag.c b/lib/alloc_tag.c index 25ecc1334b67..30adad5630dd 100644 --- a/lib/alloc_tag.c +++ b/lib/alloc_tag.c @@ -31,7 +31,11 @@ DEFINE_STATIC_KEY_MAYBE(CONFIG_MEM_ALLOC_PROFILING_ENABLED_BY_DEFAULT, mem_alloc_profiling_key); EXPORT_SYMBOL(mem_alloc_profiling_key); +#ifdef CONFIG_MEM_ALLOC_PROFILING_COMPRESSED_ENABLED_BY_DEFAULT +DEFINE_STATIC_KEY_TRUE(mem_profiling_compressed); +#else DEFINE_STATIC_KEY_FALSE(mem_profiling_compressed); +#endif struct alloc_tag_kernel_section kernel_tags = { NULL, 0 }; unsigned long alloc_tag_ref_mask;