Messages in this thread | | | From | Jim Cromie <> | Subject | [RFC PATCH 00/10] how to reclaim unneeded vmlinux memory ? | Date | Thu, 12 Oct 2023 13:47:01 -0600 |
| |
For builtin modules, dynamic-debug allocates blocks of memory into DATA, via vmlinux.lds.h.
dyndbg's struct _ddebug has fields: modname, filename, function, which keeps the the code's structural/organizational info used to enable & prefix prdbg callsites.
The linker packs the callsites in-order, which means the repetition in those 3 columns can be compactly encoded in non-overlapping intervals.
So this saves each unique column-val and its interval into a maple-tree per column, and retrieves them as needed with accessors.
It also splits out _ddebug_site and __dyndbg_sites section, and no longer needs the section, so that block is ready to reclaim.
Somethings wrong with patch-9, but it seems worth showing around.
Jim Cromie (10): dyndbg: prep to isolate 3 repetetive fields dyndbg: split __dyndbg_sites section out from __dyndbg dyndbg: add 2nd cursor pair to init-fn dyndbg: save _ddebug_site mod,file,func fields into maple-trees dyndbg: avoid _ddebug.site in ddebug_condense_sites dyndbg: add site_*() macros to avoid using _ddebug.site dyndbg: wire in __desc_*() functions dyndbg: drop _ddebug.site member dyndbg: add dd_clear_range to prune mtrees dyndbg: cache the dynamically generated prefixes per callsite
include/asm-generic/vmlinux.lds.h | 1 + include/linux/dynamic_debug.h | 40 +++-- kernel/module/main.c | 3 + lib/dynamic_debug.c | 238 +++++++++++++++++++++++++++--- 4 files changed, 252 insertions(+), 30 deletions(-)
-- 2.41.0
| |