memory usage trace follow-ups
v2 cover memory usage trace follow-ups
Hi, Harald
I refreshed the v1 patches based on latest dracut git tree. dracut-lib.sh has already been sourced after proc fs using, so I removed the changed in my patch.
Also I added one more patch to improve the cmdline document.
Please help to review.
--
Thanks
Dave
PATCH v2 1/3 print memdebug to stderr
memory usage tracing outputs are debug info, so it should be moved to stderr instead of stdout.
--- modules.d/99base/dracut-lib.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
modules.d/99base/dracut-lib.sh +1 -1
@@ -1041,7 +1041,7 @@ make_trace_mem() msg="$1" shift if [ -n "$DEBUG_MEM_LEVEL" ] && [ "$DEBUG_MEM_LEVEL" -gt 0 ]; then - make_trace show_memstats $DEBUG_MEM_LEVEL "[debug_mem]" "$msg" "$@" + make_trace show_memstats $DEBUG_MEM_LEVEL "[debug_mem]" "$msg" "$@" >&2 fi }
PATCH v2 2/3 Improve documentation of rd.memdebug
In reply to [email protected]Explain more about rd.memdebug verbose level in dracut.cmdline.7.asc.
--- dracut.cmdline.7.asc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)
dracut.cmdline.7.asc +6 -2
@@ -144,8 +144,12 @@ It should be attached to any report abou If "quiet" is set, it also logs to the console. **rd.memdebug=[0-3]**:: - print memory usage debug info, set the verbose level from 1 to 3 - print nothing when set rd.memdebug=0 + Print memory usage info at various points, set the verbose level from 0 to 3 + Higher level means more debugging output: + 0 - no output + 1 - partial /proc/meminfo + 2 - /proc/meminfo + 3 - /proc/meminfo + /proc/slabinfo **rd.break**:: drop to a shell at the end
PATCH v2 3/3 Add memdebug at different points in 99base/init.sh
In reply to [email protected]Previously I added several trace point to the begin of several init hooks of systemd, old init script also need this debug info.
Doing same here as what's added in the systemd service scripts:
At cmdline hooks adding trace of "1+:mem 1+:iomem 3+:slab" For other hooks adding trace of "1:shortmem 2+:mem 3+:slab"
--- modules.d/99base/init.sh | 7 +++++++ 1 file changed, 7 insertions(+)
modules.d/99base/init.sh +7 -0
@@ -109,6 +109,7 @@ fi source_conf /etc/conf.d # run scriptlets to parse the command line +make_trace_mem "hook cmdline" '1+:mem' '1+:iomem' '3+:slab' getarg 'rd.break=cmdline' -d 'rdbreak=cmdline' && emergency_shell -n cmdline "Break before cmdline" source_hook cmdline
@@ -118,6 +119,7 @@ source_hook cmdline export root rflags fstype netroot NEWROOT # pre-udev scripts run before udev starts, and are run only once. +make_trace_mem "hook pre-udev" '1:shortmem' '2+:mem' '3+:slab' getarg 'rd.break=pre-udev' -d 'rdbreak=pre-udev' && emergency_shell -n pre-udev "Break before pre-udev" source_hook pre-udev
@@ -136,6 +138,7 @@ getargbool 0 rd.udev.info -d -y rdudevin getargbool 0 rd.udev.debug -d -y rdudevdebug && udevadm control "$UDEV_LOG_PRIO_ARG=debug" udevproperty "hookdir=$hookdir" +make_trace_mem "hook pre-trigger" '1:shortmem' '2+:mem' '3+:slab' getarg 'rd.break=pre-trigger' -d 'rdbreak=pre-trigger' && emergency_shell -n pre-trigger "Break before pre-trigger" source_hook pre-trigger
@@ -144,6 +147,7 @@ udevadm control --reload >/dev/null 2>&1 udevadm trigger --type=subsystems --action=add >/dev/null 2>&1 udevadm trigger --type=devices --action=add >/dev/null 2>&1 +make_trace_mem "hook initqueue" '1:shortmem' '2+:mem' '3+:slab' getarg 'rd.break=initqueue' -d 'rdbreak=initqueue' && emergency_shell -n initqueue "Break before initqueue" RDRETRY=$(getarg rd.retry -d 'rd_retry=')
@@ -204,6 +208,7 @@ unset RDRETRY # pre-mount happens before we try to mount the root filesystem, # and happens once. +make_trace_mem "hook pre-mount" '1:shortmem' '2+:mem' '3+:slab' getarg 'rd.break=pre-mount' -d 'rdbreak=pre-mount' && emergency_shell -n pre-mount "Break pre-mount" source_hook pre-mount
@@ -239,9 +244,11 @@ done # pre pivot scripts are sourced just before we doing cleanup and switch over # to the new root. +make_trace_mem "hook pre-pivot" '1:shortmem' '2+:mem' '3+:slab' getarg 'rd.break=pre-pivot' -d 'rdbreak=pre-pivot' && emergency_shell -n pre-pivot "Break pre-pivot" source_hook pre-pivot +make_trace_mem "hook cleanup" '1:shortmem' '2+:mem' '3+:slab' # pre pivot cleanup scripts are sourced just before we switch over to the new root. getarg 'rd.break=cleanup' -d 'rdbreak=cleanup' && emergency_shell -n cleanup "Break cleanup" source_hook cleanup