• Suren Baghdasaryan's avatar
    lib: introduce early boot parameter to avoid page_ext memory overhead · 8d469d0b
    Suren Baghdasaryan authored
    The highest memory overhead from memory allocation profiling comes from
    page_ext objects.  This overhead exists even if the feature is disabled
    but compiled-in.  To avoid it, introduce an early boot parameter that
    prevents page_ext object creation.  The new boot parameter is a tri-state
    with possible values of 0|1|never.  When it is set to "never" the memory
    allocation profiling support is disabled, and overhead is minimized
    (currently no page_ext objects are allocated, in the future more overhead
    might be eliminated).  As a result we also lose ability to enable memory
    allocation profiling at runtime (because there is no space to store
    alloctag references).  Runtime sysctrl becomes read-only if the early boot
    parameter was set to "never".  Note that the default value of this boot
    parameter depends on the CONFIG_MEM_ALLOC_PROFILING_ENABLED_BY_DEFAULT
    configuration.  When CONFIG_MEM_ALLOC_PROFILING_ENABLED_BY_DEFAULT=n the
    boot parameter is set to "never", therefore eliminating any overhead. 
    CONFIG_MEM_ALLOC_PROFILING_ENABLED_BY_DEFAULT=y results in boot parameter
    being set to 1 (enabled).  This allows distributions to avoid any overhead
    by setting CONFIG_MEM_ALLOC_PROFILING_ENABLED_BY_DEFAULT=n config and with
    no changes to the kernel command line.
    
    We reuse sysctl.vm.mem_profiling boot parameter name in order to avoid
    introducing yet another control.  This change turns it into a tri-state
    early boot parameter.
    
    Link: https://lkml.kernel.org/r/20240321163705.3067592-16-surenb@google.comSigned-off-by: default avatarSuren Baghdasaryan <surenb@google.com>
    Reviewed-by: default avatarVlastimil Babka <vbabka@suse.cz>
    Tested-by: default avatarKees Cook <keescook@chromium.org>
    Cc: Alexander Viro <viro@zeniv.linux.org.uk>
    Cc: Alex Gaynor <alex.gaynor@gmail.com>
    Cc: Alice Ryhl <aliceryhl@google.com>
    Cc: Andreas Hindborg <a.hindborg@samsung.com>
    Cc: Benno Lossin <benno.lossin@proton.me>
    Cc: "Björn Roy Baron" <bjorn3_gh@protonmail.com>
    Cc: Boqun Feng <boqun.feng@gmail.com>
    Cc: Christoph Lameter <cl@linux.com>
    Cc: Dennis Zhou <dennis@kernel.org>
    Cc: Gary Guo <gary@garyguo.net>
    Cc: Kent Overstreet <kent.overstreet@linux.dev>
    Cc: Miguel Ojeda <ojeda@kernel.org>
    Cc: Pasha Tatashin <pasha.tatashin@soleen.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Tejun Heo <tj@kernel.org>
    Cc: Wedson Almeida Filho <wedsonaf@gmail.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    8d469d0b
alloc_tag.c 4.76 KB