On Fri 18-10-24 10:45:39, Suren Baghdasaryan wrote: > On Fri, Oct 18, 2024 at 10:08 AM Michal Hocko <mhocko@xxxxxxxx> wrote: > > > > On Fri 18-10-24 09:04:24, Suren Baghdasaryan wrote: > > > On Fri, Oct 18, 2024 at 6:03 AM Michal Hocko <mhocko@xxxxxxxx> wrote: > > > > > > > > On Tue 15-10-24 08:58:59, Suren Baghdasaryan wrote: > > > > > On Tue, Oct 15, 2024 at 8:42 AM David Hildenbrand <david@xxxxxxxxxx> 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. Right, I do understand (I guess) the challenge. I am just arguing that it makes really no sense to tell user to recompile the kernel with a CONFIG_FOO to workaround this limitation. Please note that many users of this feature will simply use a precompiled (e.g. distribution) kernels. Once you force somebody to recompile with CONFIG_PGALLOC_TAG_USE_PAGEFLAGS=n they are not going back to a more memory optimal implementation. Just my 2cents -- Michal Hocko SUSE Labs