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 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 604A8C369C9 for ; Wed, 16 Apr 2025 21:08:48 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6A4B56B026B; Wed, 16 Apr 2025 17:08:46 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 62CE46B027F; Wed, 16 Apr 2025 17:08:46 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 51C126B0280; Wed, 16 Apr 2025 17:08:46 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id EDDCE6B026B for ; Wed, 16 Apr 2025 17:08:45 -0400 (EDT) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id C7808C0D12 for ; Wed, 16 Apr 2025 21:08:45 +0000 (UTC) X-FDA: 83341146210.28.C016056 Received: from mail-qt1-f173.google.com (mail-qt1-f173.google.com [209.85.160.173]) by imf20.hostedemail.com (Postfix) with ESMTP id E76631C0006 for ; Wed, 16 Apr 2025 21:08:43 +0000 (UTC) Authentication-Results: imf20.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=HCP78Gqh; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf20.hostedemail.com: domain of surenb@google.com designates 209.85.160.173 as permitted sender) smtp.mailfrom=surenb@google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1744837723; 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-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=uf5rroFrk8960zthe1sFA5RRqaLe5+GYDXOkL0qP4DE=; b=pkNSCACnbPlaI2LoCAbGVryrtwb0FjjuUrN2jYZvTu8EXMmK2UTjPkA0ymt9q9aWKXVtWD Oc9dWU2IniQu+Kc6h9gFlipAtIxcFbThH1gVJJZrKGOSkWBQCr8xykVrt/ugbH5/GmkUo+ a1fZnY70DA9ATo18K0ypTsvxjKycnmM= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1744837723; a=rsa-sha256; cv=none; b=yOzbYR0uG2mg/V8Rb0S7lVIiparQ8n4dkZj16tgsZ3hRzBcwO4JABSoKIv6RCFMSotlyrK /i7gUqw9zVQYaBLJsBtQL4/K2+NFk87uNUL3Un6jxk8Vp6my7OOVf1OQSHuRJ+DOs4jLJR 6uqE9sPb7TOmUFiNSwytnRIUz8DMW8E= ARC-Authentication-Results: i=1; imf20.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=HCP78Gqh; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf20.hostedemail.com: domain of surenb@google.com designates 209.85.160.173 as permitted sender) smtp.mailfrom=surenb@google.com Received: by mail-qt1-f173.google.com with SMTP id d75a77b69052e-4769e30af66so38681cf.1 for ; Wed, 16 Apr 2025 14:08:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1744837723; x=1745442523; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=uf5rroFrk8960zthe1sFA5RRqaLe5+GYDXOkL0qP4DE=; b=HCP78Gqhaof+pzgjhFeqlKyeLxt748w+XN1x1zdhpw8oY2XAr+oy3jLBcNAs4GeFnx RALC/WjlWaNPORc5sjCF2CwwVbUX6RT0G+Hxv+b2REiuGUJrDB5qmwx8LaDUOrbZ7X4s l8aMxo+Lf4mb+r1D5oiYGhOrU7ez36J/4WS3kjELAZ1UUw59bvtE08R6W9hS1V6BSD/q +bVAMGjvPWQ4YNIzj8Q/krEQ9gUwNghJsl8uzloImcwYelPihcRxv6vrnUA2ntkgIXQk PJahRHXKwRTwZlTs8P7MjcqLcOvLm+o2wauzsGPSV/LZUTisGp6aYUShnDWqPNq5JbTa aYrg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744837723; x=1745442523; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=uf5rroFrk8960zthe1sFA5RRqaLe5+GYDXOkL0qP4DE=; b=PSc5XIeRnqDa0PACIPdeZipsuTPyWrSl3cYFB6HM4ig9m+xbo3lxeACju8tjHhqj7c ZTmhoNmN+nitmwx7IV+jSM/88d5P4jnZLJxO2q79wU7Nfi3HycpovdRw8Bn6BKZMGPfm LdNZ21ONYP0YCgTkqV8tpMYa9IEG1mDBr5EGNXbJDK6pMCHJxaILlmmag9kDQmKcQqGs fel5IuXKB+AaipbTeB0T7r0pQpEHHiAM4IL/ywWRGkk9LQjO9kOMNbDi3LaTiHg+jZZw kACNGHmau41XL8TC/3gwjUQVKnT23+HPbf43ZdHf1aNsx17z3PvcvJTJuLxdjxmeI5wo tdJg== X-Forwarded-Encrypted: i=1; AJvYcCUvFKbWcfMFR3oTD/1qvmXPY9Lo4mMbCbg1oXCmodyS6DpvauUS5SeCOYL07CcPihdfUaGvFjJd2g==@kvack.org X-Gm-Message-State: AOJu0YwEbiVP7Wm60fGZXKL91JpkP+EYiauDkuNzJoS4Odgx+oANhKLY IOv4fFkrxbg3jTAHWm5XlomD1qHSeJdvldqfQdhbj8O9cExYUM3uSIzN38t8mXeoHkD0pt/XSj3 KJNA4CfRyvsxTmUP/is+44DDMNMJhm7xd7NJw X-Gm-Gg: ASbGnctgSCqZcLibTOdE9ec3+i4XxalHEKlXhKxqFHx10nMI1UT0FH8hZkItRS9XbXs h0zfeXzQHReXNi3EaIDMLj4UoHUq26ckI5sry2py/Ue39da48TZL3n8iYIXI+hOMQKrbHIRAiGE r96UfaQFb8mVrA24KSzwC1hqsvCyPS+l9VYYz57WCX1OReQQlJTpoG X-Google-Smtp-Source: AGHT+IF1vsoRMN9C84PrAHwA/9EeuNG7HJJdjAklvVmrMXYNAtpy22QSQPHYtUW9cCmdGQcvb1OFfU8J9ny6Wh5HLso= X-Received: by 2002:a05:622a:d0:b0:477:637f:a63 with SMTP id d75a77b69052e-47ade60c5cbmr1064471cf.6.1744837722605; Wed, 16 Apr 2025 14:08:42 -0700 (PDT) MIME-Version: 1.0 References: <20250416180653.3438158-1-usamaarif642@gmail.com> In-Reply-To: <20250416180653.3438158-1-usamaarif642@gmail.com> From: Suren Baghdasaryan Date: Wed, 16 Apr 2025 14:08:31 -0700 X-Gm-Features: ATxdqUHXBSTxlONVuwsC8A5lCKQUbU8hrp0plSQ2Fa9jC37qJNdHXG-kv8M37lI Message-ID: Subject: Re: [PATCH] alloc_tag: introduce Kconfig option for default compressed profiling To: Usama Arif Cc: Andrew Morton , linux-mm@kvack.org, hannes@cmpxchg.org, shakeel.butt@linux.dev, linux-kernel@vger.kernel.org, kernel-team@meta.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: E76631C0006 X-Rspam-User: X-Stat-Signature: hektn5x67krrcynicajfw9dhyagqwc8i X-HE-Tag: 1744837723-249525 X-HE-Meta: U2FsdGVkX19cuS4opYmfnF0jHxYYzOwkRH76qvyTG3XmL1CgDgBhcUQJHtudqajTcwzIxw2ikFE6uoh3kEvNK/FWLNh0D8ZiepWad1T/q/lGweZOP4RB/IgZp/lUJG2wZjAnG7SsgpUVUy+srTQivm5HJk2sUbX4O0QgOY6+bWg8es+k6FpyDZXSr3RWJF6iKFP56GR/Mtfuu6GGMEum1Fq6W3JF/7m/nYLj66w2xayvyjsLcJBExFqi08veveZ9e0xDhNobYvMKaBkjQNhEgELVZXm2XmNdFlTCly+eJpn9FlP9DQ/4c8oEuqLGsOt30LzMXrObA2H5qKTcrY/eh/C/ba9xY+kaP4VYCMQ/ucwexiEOQN6OdrQFRO8Pq4jp6iPAOIqpFi46GiJjEPKsWh3RPYEw5V5Ujfu20Sl2qN2gZx4CT1du7Kk6Hd52DCVK2YssIPdJi8o11GeKSI9OzIQxAyNbzSJnDiM+K0be2fyCtugpxH8dl2kz6eHkVtnj3U/h7IKg+v3XDM28SkOl0sDxj0NPwjZYiVTtd1canHOtLAAjrXA4D+CJIAIjfBRdiXyaAMNr6MZIcZj54iKZIPB9allPMgNzIGk3qjY8RxBeLBk2ECTfjBF7QvXAT0TdjBmjO3qeJbSAm1XCRHf9Ni4Katd6biDO0ILa1JkgtYuCSGAvmjlkAr1GudsNYyNP/a2+1GnLal0PEfeeEq2i0TgJPdWTrHW5dNF6aGXdHlMlL0WBrVh+BAbp94eXPaGbPTxM8Se/4B9hO9mCbcHPHCXAxMm8FqgczEcfibFgzLi7wxt3z+BKedl8iLEmkCpZ6y1+DHmZgyiiXp5uZ7V9GwWdCnp4+C8jufeT3l7vmml+oOcm66hDO3Jhu3fqIB3MN6RSCKtmCem9XG+P5Dc6YrLWM08+LLlq0akoTCLHFNiL3TUOriPRv5fjlvDmvxt6ZWmqnMJWGtKnuEEkuMr MB0hyyYV WYcm5DpJmcY+g6WQaYdwKiNRetPBmIbuA2NnvZ/1MUum7khIvRgIh7+FTqRpwYBMXM11kkN9gBvyghXQA07pcfspIxTo/G8ixPuoW4KXoezKLNknY5cIQIlb+7fGn2F7fNiZk8bUOSIzeqcp5XjIN/qxKKf5G0Yd5TDtZTUBS8cTyiX6NbdQvPbNPG0ceRzwCtfq0IG/mmTc7HghWWnek8rWEvVjnhvbMexhxn08r7Kf8OT5Eugt5OpUtudcQdLGKPcx2yg3C3TJ24/Gra/YL7sU0mzcUYDfMUjWyI588J4ilYVxL78hli6mF/Q== 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: On Wed, Apr 16, 2025 at 11:06=E2=80=AFAM Usama Arif wrote: > > With this Kconfig option enabled, the kernel stores allocation tag refere= nces > 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 servi= ces > can result in signifcant work, which shouldn't be needed if the kernel > defconfig needs to be changed anyways. The reason tag compression is not the default option is because it works only if there are enough free bits in the page flags to store a tag index. If you configure it to use page flags and your build does not have enough free bits, the profiling will be disabled (see alloc_tag_sec_init()). IOW there is no graceful fallback to use page extensions. Therefore, the current default option is not the most performant but the one which works on all builds. Instead of this just set sysctl.vm.mem_profiling boot parameter in your config file. Your change effectively changes the default value of mem_profiling_compressed and I don't see why you need to introduce a new config option for that. But that really does not matter because changing default to compressed tags is not the right choice IMO. > > [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 d= efault" > + 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_ENA= BLED_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 =3D { NULL, 0 }; > unsigned long alloc_tag_ref_mask; > -- > 2.47.1 >