On Mon 21-10-24 08:41:00, Suren Baghdasaryan wrote: > On Mon, Oct 21, 2024 at 8:34 AM Michal Hocko <mhocko@xxxxxxxx> wrote: > > > > On Mon 21-10-24 08:05:16, Suren Baghdasaryan wrote: > > [...] > > > Yeah, I thought about adding new values to "mem_profiling" but it's a > > > bit complicated. Today it's a tristate: > > > > > > mem_profiling=0|1|never > > > > > > 0/1 means we disable/enable memory profiling by default but the user > > > can enable it at runtime using a sysctl. This means that we enable > > > page_ext at boot even when it's set to 0. > > > "never" means we do not enable page_ext, memory profiling is disabled > > > and sysctl to enable it will not be exposed. Used when a distribution > > > has CONFIG_MEM_ALLOC_PROFILING=y but the user does not use it and does > > > not want to waste memory on enabling page_ext. > > > > > > I can add another option like "pgflags" but then it also needs to > > > specify whether we should enable or disable profiling by default > > > (similar to 0|1 for page_ext mode). IOW we will need to encode also > > > the default state we want. Something like this: > > > > > > mem_profiling=0|1|never|pgflags_on|pgflags_off > > > > > > Would this be acceptable? > > > > Isn't this overcomplicating it? Why cannot you simply go with > > mem_profiling={0|never|1}[,$YOUR_OPTIONS] > > > > While $YOUR_OPTIONS could be compress,fallback,ponies and it would apply > > or just be ignored if that is not applicable. > > Oh, you mean having 2 parts in the parameter with supported options being: > > mem_profiling=never > mem_profiling=0 > mem_profiling=1 > mem_profiling=0,pgflags > mem_profiling=1,pgflags > > Did I understand correctly? If so then yes, this should work. yes. I would just not call it pgflags because that just doesn't really tell what the option is to anybody but kernel developers. You could also have an option to override the default (disable profiling) failure strategy. -- Michal Hocko SUSE Labs