From: Harald Hoyer <harald-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
To: dyoung-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org
Cc: vgoyal-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org,
jstancek-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org,
initramfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [PATCH 2/2 V3] Add memory usage trace to diffrent hook points
Date: Thu, 17 Jan 2013 14:43:14 +0100 [thread overview]
Message-ID: <50F7FFF2.4020309@redhat.com> (raw)
In-Reply-To: <20130117085724.212324334-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Am 17.01.2013 09:55, schrieb dyoung-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org:
> Port mkdumprd memory trace functions wrote by jstancek-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org
> For kdump, memory usage tracing is important because there's limited
> memory in kdump 2nd kernel.
>
> Add a rd.memdebug cmdline for this. set rd.memdebug=<X> will set the
> debug level to X which is the debug verbose level.
>
> the format of cmdline is like below:
> <level>[+]:<type>
> <level> is the debug level
> [+] means debug level >= <level>
> <type> is the debug info type, as for this patch I added mem, iomem, slab
> mem is for /proc/meminfo, iomem is for /proc/iomem, slab is for /proc/slabinfo
> Also shortmem is the stripped /proc/meminfo which only includes 3 lines of
> Memfree, Cached and Slab, for example:
> MemFree: 6327176 kB
> Cached: 741916 kB
> Slab: 77284 kB
>
> I added several trace point to the begin of several init hooks
> At cmdline hooks I'm adding trace of "1+:mem 1+:iomem 3+:slab"
> For other hooks I'm adding trace of "1:shortmem 2+:mem 3+:slab"
>
> This means:
> rd.memdebug=1)
> cmdline hook: print mem and iomem
> other hooks: print shortmem
> rd.memdebug=2)
> cmdline hook: print mem and iomem
> other hooks: print mem
> rd.memdebug=3):
> cmdline hook: print mem iomem, and slabinfo
> other hooks: print mem and slabinfo
> *):
> do not print any mem debug info
>
> [v1->v2]: update to use getargnum with <minval> as argument
> print iomem info at cmdline hook as well
> [v2->v3]: harald: use $() instead of ``
> use bash string match instead of grep and pipe.
>
> Signed-off-by: Dave Young <dyoung-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
> ---
> dracut.cmdline.7.asc | 4 +
> modules.d/98systemd/dracut-cmdline.sh | 1
> modules.d/98systemd/dracut-initqueue.sh | 1
> modules.d/98systemd/dracut-pre-pivot.sh | 1
> modules.d/98systemd/dracut-pre-trigger.sh | 1
> modules.d/98systemd/dracut-pre-udev.sh | 1
> modules.d/99base/dracut-lib.sh | 91 ++++++++++++++++++++++++++++++
> 7 files changed, 100 insertions(+)
>
...
> --- dracut.orig/modules.d/99base/dracut-lib.sh
> +++ dracut/modules.d/99base/dracut-lib.sh
...
> +# parameters: msg [trace_level:trace]...
> +function make_trace_mem()
> +{
local msg
> + msg=$1
> + shift
> + if [ "$DEBUG_MEM_LEVEL" -gt 0 ]; then
> + make_trace show_memstats $DEBUG_MEM_LEVEL "[debug_mem]" "$msg" "$@"
> + fi
> +}
> +
> +# parameters: func log_level prefix msg [trace_level:trace]...
> +function make_trace()
> +{
local func
local log_level
local prefix
.....
> + func=$1
> + shift
> +
> + log_level=$1
> + shift
> +
> + prefix=$1
> + shift
> +
> + msg=$1
> + shift
> +
> + if [ -z "$log_level" ]; then
> + return
> + fi
> +
> + msg=$(echo $msg)
> +
> + msg_printed=0
> + while [ $# -gt 0 ]; do
> + trace=${1%%:*}
> + trace_level=${trace%%+}
> + [ "$trace" != "$trace_level" ] && trace_in_higher_levels="yes"
> + trace=${1##*:}
> +
> + if [ -z "$trace_level" ]; then
> + trace_level=0
> + fi
> +
> + insert_trace=0
> + if [ -n "$trace_in_higher_levels" ]; then
> + if [ "$log_level" -ge "$trace_level" ]; then
> + insert_trace=1
> + fi
> + else
> + if [ "$log_level" -eq "$trace_level" ]; then
> + insert_trace=1
> + fi
> + fi
> +
> + if [ $insert_trace -eq 1 ]; then
> + if [ $msg_printed -eq 0 ]; then
> + echo "$prefix $msg"
> + msg_printed=1
> + fi
> + $func $trace
> + fi
> + shift
> + done
> +}
> +
next prev parent reply other threads:[~2013-01-17 13:43 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-01-17 8:55 [PATCH 0/2 V3] memory usage tracing update dyoung-H+wXaHxf7aLQT0dZR+AlfA
2013-01-17 8:55 ` [PATCH 1/2 V3] add function getargnum dyoung-H+wXaHxf7aLQT0dZR+AlfA
[not found] ` <20130117085724.062434676-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2013-01-22 14:32 ` Harald Hoyer
2013-01-17 8:55 ` [PATCH 2/2 V3] Add memory usage trace to diffrent hook points dyoung-H+wXaHxf7aLQT0dZR+AlfA
[not found] ` <20130117085724.212324334-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2013-01-17 13:43 ` Harald Hoyer [this message]
[not found] ` <50F7FFF2.4020309-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2013-01-18 1:59 ` [PATCH 2/2 V4] " Dave Young
[not found] ` <50F8AC98.1060308-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2013-01-22 14:32 ` Harald Hoyer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=50F7FFF2.4020309@redhat.com \
--to=harald-h+wxahxf7alqt0dzr+alfa@public.gmane.org \
--cc=dyoung-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=initramfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=jstancek-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=vgoyal-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox