Am 21.10.24 um 09:26 schrieb Michal Hocko:
On Fri 18-10-24 14:57:26, Suren Baghdasaryan wrote:
On Fri, Oct 18, 2024 at 10:45 AM Suren Baghdasaryan <surenb@xxxxxxxxxx> wrote:
On Fri, Oct 18, 2024 at 10:08 AM Michal Hocko <mhocko@xxxxxxxx> wrote:
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.
Maybe we can reuse the existing parameter (e.g., tristate). Only makes sense if
we don't expect too many other modes though :)
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.
Agreed.
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.
Sounds reasonable to me.
--
Cheers,
David / dhildenb