• Steven Rostedt (Google)'s avatar
    tracing: Have saved_cmdlines arrays all in one allocation · 0b18c852
    Steven Rostedt (Google) authored
    The saved_cmdlines have three arrays for mapping PIDs to COMMs:
    
     - map_pid_to_cmdline[]
     - map_cmdline_to_pid[]
     - saved_cmdlines
    
    The map_pid_to_cmdline[] is PID_MAX_DEFAULT in size and holds the index
    into the other arrays. The map_cmdline_to_pid[] is a mapping back to the
    full pid as it can be larger than PID_MAX_DEFAULT. And the
    saved_cmdlines[] just holds the COMMs associated to the pids.
    
    Currently the map_pid_to_cmdline[] and saved_cmdlines[] are allocated
    together (in reality the saved_cmdlines is just in the memory of the
    rounding of the allocation of the structure as it is always allocated in
    powers of two). The map_cmdline_to_pid[] array is allocated separately.
    
    Since the rounding to a power of two is rather large (it allows for 8000
    elements in saved_cmdlines), also include the map_cmdline_to_pid[] array.
    (This drops it to 6000 by default, which is still plenty for most use
    cases). This saves even more memory as the map_cmdline_to_pid[] array
    doesn't need to be allocated.
    
    Link: https://lore.kernel.org/linux-trace-kernel/20240212174011.068211d9@gandalf.local.home/
    Link: https://lore.kernel.org/linux-trace-kernel/20240220140703.182330529@goodmis.org
    
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Tim Chen <tim.c.chen@linux.intel.com>
    Cc: Vincent Donnefort <vdonnefort@google.com>
    Cc: Sven Schnelle <svens@linux.ibm.com>
    Cc: Mete Durlu <meted@linux.ibm.com>
    Fixes: 44dc5c41 ("tracing: Fix wasted memory in saved_cmdlines logic")
    Acked-by: default avatarMasami Hiramatsu (Google) <mhiramat@kernel.org>
    Signed-off-by: default avatarSteven Rostedt (Google) <rostedt@goodmis.org>
    0b18c852
trace.c 264 KB