linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Michal Hocko <mhocko@suse.com>
To: Suren Baghdasaryan <surenb@google.com>
Cc: David Hildenbrand <david@redhat.com>,
	John Hubbard <jhubbard@nvidia.com>,
	Yosry Ahmed <yosryahmed@google.com>,
	akpm@linux-foundation.org, kent.overstreet@linux.dev,
	corbet@lwn.net, arnd@arndb.de, mcgrof@kernel.org,
	rppt@kernel.org, paulmck@kernel.org, thuth@redhat.com,
	tglx@linutronix.de, bp@alien8.de, xiongwei.song@windriver.com,
	ardb@kernel.org, vbabka@suse.cz, hannes@cmpxchg.org,
	roman.gushchin@linux.dev, dave@stgolabs.net, willy@infradead.org,
	liam.howlett@oracle.com, pasha.tatashin@soleen.com,
	souravpanda@google.com, keescook@chromium.org, dennis@kernel.org,
	yuzhao@google.com, vvvvvv@google.com, rostedt@goodmis.org,
	iamjoonsoo.kim@lge.com, rientjes@google.com, minchan@google.com,
	kaleshsingh@google.com, linux-doc@vger.kernel.org,
	linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org,
	linux-mm@kvack.org, linux-modules@vger.kernel.org,
	kernel-team@android.com
Subject: Re: [PATCH v3 5/5] alloc_tag: config to store page allocation tag refs in page flags
Date: Mon, 21 Oct 2024 09:26:35 +0200	[thread overview]
Message-ID: <ZxYCK0jZVmKSksA4@tiehlicka> (raw)
In-Reply-To: <CAJuCfpHFmmZhSrWo0iWST9+DGbwJZYdZx7zjHSHJLs_QY-7UbA@mail.gmail.com>

On Fri 18-10-24 14:57:26, Suren Baghdasaryan wrote:
> On Fri, Oct 18, 2024 at 10:45 AM Suren Baghdasaryan <surenb@google.com> wrote:
> >
> > On Fri, Oct 18, 2024 at 10:08 AM Michal Hocko <mhocko@suse.com> wrote:
> > >
> > > On Fri 18-10-24 09:04:24, Suren Baghdasaryan wrote:
> > > > On Fri, Oct 18, 2024 at 6:03 AM Michal Hocko <mhocko@suse.com> wrote:
> > > > >
> > > > > On Tue 15-10-24 08:58:59, Suren Baghdasaryan wrote:
> > > > > > On Tue, Oct 15, 2024 at 8:42 AM David Hildenbrand <david@redhat.com> wrote:
> > > > > [...]
> > > > > > > Right, I think what John is concerned about (and me as well) is that
> > > > > > > once a new feature really needs a page flag, there will be objection
> > > > > > > like "no you can't, we need them for allocation tags otherwise that
> > > > > > > feature will be degraded".
> > > > > >
> > > > > > I do understand your concern but IMHO the possibility of degrading a
> > > > > > feature should not be a reason to always operate at degraded capacity
> > > > > > (which is what we have today). If one is really concerned about
> > > > > > possible future regression they can set
> > > > > > CONFIG_PGALLOC_TAG_USE_PAGEFLAGS=n and keep what we have today. That's
> > > > > > why I'm strongly advocating that we do need
> > > > > > CONFIG_PGALLOC_TAG_USE_PAGEFLAGS so that the user has control over how
> > > > > > this scarce resource is used.
> > > > >
> > > > > I really do not think users will know how/why to setup this and I wouldn't
> > > > > even bother them thinking about that at all TBH.
> > > > >
> > > > > This is an implementation detail. It is fine to reuse unused flags space
> > > > > as a storage as a performance optimization but why do you want users to
> > > > > bother with that? Why would they ever want to say N here?
> > > >
> > > > In this patch you can find a couple of warnings that look like this:
> > > >
> > > > pr_warn("With module %s there are too many tags to fit in %d page flag
> > > > bits. Memory profiling is disabled!\n", mod->name,
> > > > NR_UNUSED_PAGEFLAG_BITS);
> > > > emitted when we run out of page flag bits during a module loading,
> > > >
> > > > pr_err("%s: alignment %lu is incompatible with allocation tag
> > > > indexing, disable CONFIG_PGALLOC_TAG_USE_PAGEFLAGS",  mod->name,
> > > > align);
> > > > emitted when the arch-specific section alignment is incompatible with
> > > > alloc_tag indexing.
> > >
> > > You are asking users to workaround implementation issue by configuration
> > > which sounds like a really bad idea. Why cannot you make the fallback
> > > automatic?
> >
> > Automatic fallback is possible during boot, when we decide whether to
> > enable page extensions or not. So, if during boot we decide to disable
> > page extensions and use page flags, we can't go back and re-enable
> > page extensions after boot is complete. Since there is a possibility
> > that we run out of page flags at runtime when we load a new module,
> > this leaves this case when we can't reference the module tags and we
> > can't fall back to page extensions, so we have to disable memory
> > profiling.
> > I could keep page extensions always on just in case this happens but
> > that's a lot of memory waste to handle a rare case...
> 
> After thinking more about this, I suggest a couple of changes that
> IMHO would make configuration simpler:
> 1. Change the CONFIG_PGALLOC_TAG_USE_PAGEFLAGS to an early boot
> parameter.

This makes much more sense!

> Today we have a "mem_profiling" parameter to enable/disable
> memory profiling. I suggest adding "mem_profiling_use_pgflags" to
> switch the current behavior of using page extensions to use page
> flags.

I do not want to bikeshed about this but to me it would make more sense
to have an extension paramater to mem_profiling and call it something
like compress or similar so that page flags are not really carved into
naming. The docuemntation then can explain that the copression cannot be
always guaranteed and it might fail so this is more of a optimistic and
potentially failing optimization that might need to be dropped in some
usege scenarios.

> We keep the current behavior of using page extensions as
> default (mem_profiling_use_pgflags=0) because it always works even
> though it has higher overhead.

Yes this seems to be a safe default.

> 2. No auto-fallback. If mem_profiling_use_pgflags=1 and we don't have
> enough page flags (at boot time or later when we load a module), we
> simply disable memory profiling with a warning.

No strong opinion on this.

-- 
Michal Hocko
SUSE Labs


  reply	other threads:[~2024-10-21  7:26 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-10-14 20:36 [PATCH v3 0/5] page allocation tag compression Suren Baghdasaryan
2024-10-14 20:36 ` [PATCH v3 1/5] maple_tree: add mas_for_each_rev() helper Suren Baghdasaryan
2024-10-16  1:48   ` Liam R. Howlett
2024-10-16  5:33     ` Suren Baghdasaryan
2024-10-14 20:36 ` [PATCH v3 2/5] alloc_tag: load module tags into separate contiguous memory Suren Baghdasaryan
2024-10-14 23:51   ` Andrew Morton
2024-10-15  2:10     ` Suren Baghdasaryan
2024-10-15 21:08       ` Shakeel Butt
2024-10-15 22:59         ` Suren Baghdasaryan
2024-10-14 20:36 ` [PATCH v3 3/5] alloc_tag: populate memory for module tags as needed Suren Baghdasaryan
2024-10-15 12:15   ` Mike Rapoport
2024-10-15 14:49     ` Suren Baghdasaryan
2024-10-14 20:36 ` [PATCH v3 4/5] alloc_tag: introduce pgalloc_tag_ref to abstract page tag references Suren Baghdasaryan
2024-10-14 20:36 ` [PATCH v3 5/5] alloc_tag: config to store page allocation tag refs in page flags Suren Baghdasaryan
2024-10-14 23:48   ` Yosry Ahmed
2024-10-14 23:53     ` John Hubbard
2024-10-14 23:56       ` Yosry Ahmed
2024-10-15  0:03         ` John Hubbard
2024-10-15  1:40           ` Matthew Wilcox
2024-10-15  2:03             ` Suren Baghdasaryan
2024-10-15  1:58           ` Suren Baghdasaryan
2024-10-15  8:10             ` Yosry Ahmed
2024-10-15 15:06               ` Suren Baghdasaryan
2024-10-15  7:32       ` David Hildenbrand
2024-10-15 14:59         ` Suren Baghdasaryan
2024-10-15 15:42           ` David Hildenbrand
2024-10-15 15:58             ` Suren Baghdasaryan
2024-10-18 13:03               ` Michal Hocko
2024-10-18 16:04                 ` Suren Baghdasaryan
2024-10-18 17:08                   ` Michal Hocko
2024-10-18 17:45                     ` Suren Baghdasaryan
2024-10-18 21:57                       ` Suren Baghdasaryan
2024-10-21  7:26                         ` Michal Hocko [this message]
2024-10-21  9:13                           ` David Hildenbrand
2024-10-21 15:05                             ` Suren Baghdasaryan
2024-10-21 15:34                               ` Michal Hocko
2024-10-21 15:41                                 ` Suren Baghdasaryan
2024-10-21 15:49                                   ` David Hildenbrand
2024-10-21 15:57                                   ` Michal Hocko
2024-10-21 16:16                                     ` Suren Baghdasaryan
2024-10-21 16:23                                       ` Michal Hocko
2024-10-21 16:32                                         ` Suren Baghdasaryan
2024-10-21 18:12                                           ` John Hubbard
2024-10-21  7:21                       ` Michal Hocko
2024-10-14 23:32 ` [PATCH v3 0/5] page allocation tag compression Andrew Morton
2024-10-15  1:48   ` Suren Baghdasaryan
2024-10-15 16:26     ` Suren Baghdasaryan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ZxYCK0jZVmKSksA4@tiehlicka \
    --to=mhocko@suse.com \
    --cc=akpm@linux-foundation.org \
    --cc=ardb@kernel.org \
    --cc=arnd@arndb.de \
    --cc=bp@alien8.de \
    --cc=corbet@lwn.net \
    --cc=dave@stgolabs.net \
    --cc=david@redhat.com \
    --cc=dennis@kernel.org \
    --cc=hannes@cmpxchg.org \
    --cc=iamjoonsoo.kim@lge.com \
    --cc=jhubbard@nvidia.com \
    --cc=kaleshsingh@google.com \
    --cc=keescook@chromium.org \
    --cc=kent.overstreet@linux.dev \
    --cc=kernel-team@android.com \
    --cc=liam.howlett@oracle.com \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux-modules@vger.kernel.org \
    --cc=mcgrof@kernel.org \
    --cc=minchan@google.com \
    --cc=pasha.tatashin@soleen.com \
    --cc=paulmck@kernel.org \
    --cc=rientjes@google.com \
    --cc=roman.gushchin@linux.dev \
    --cc=rostedt@goodmis.org \
    --cc=rppt@kernel.org \
    --cc=souravpanda@google.com \
    --cc=surenb@google.com \
    --cc=tglx@linutronix.de \
    --cc=thuth@redhat.com \
    --cc=vbabka@suse.cz \
    --cc=vvvvvv@google.com \
    --cc=willy@infradead.org \
    --cc=xiongwei.song@windriver.com \
    --cc=yosryahmed@google.com \
    --cc=yuzhao@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox