Hello Juan Hernandez,

I'd like you to do a code review.  Please visit

    http://gerrit.ovirt.org/17470

to review the following change.

Change subject: tools: Add script to dump heap
......................................................................

tools: Add script to dump heap

This change adds the engine-heap-dump.sh script that generates an
histogram of the use of memory and a heap dump. These files can be
manually generated using the jmap tool, the script just simplifies
it a bit.

Change-Id: Ic337441123a7129d71c0a90aa4b12c8ec49c03c7
Signed-off-by: Juan Hernandez <juan.hernan...@redhat.com>
Signed-off-by: Liran Zelkha <liran.zel...@redhat.com>
Signed-off-by: Alon Bar-Lev <alo...@redhat.com>
---
A packaging/bin/engine-heap-dump.sh
1 file changed, 89 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/70/17470/1

diff --git a/packaging/bin/engine-heap-dump.sh 
b/packaging/bin/engine-heap-dump.sh
new file mode 100755
index 0000000..0f768aa
--- /dev/null
+++ b/packaging/bin/engine-heap-dump.sh
@@ -0,0 +1,89 @@
+#!/bin/sh
+
+. "$(dirname "$(readlink -f "$0")")"/engine-prolog.sh
+
+if [ "$(id -u)" = 0 ]; then
+       exec su - "${ENGINE_USER}" -c "$0" "$@"
+       die "Cannot su into root."
+fi
+
+warn() {
+       local m="$1"
+       echo "WARNING: ${m}"
+}
+
+dump() {
+       local prefix="$1"
+       local pid="$2"
+
+       local histo="${prefix}histo.${pid}.txt"
+       local dump="${prefix}dump.${pid}.bin"
+       local heap="${prefix}heap.${pid}.txt"
+
+       "${JMAP}" -histo -F ${PID} > "${histo}" \
+               || warn "Cannot dump histogram"
+       "${JMAP}" -heap ${PID} > "${heap}" \
+               || warn "Cannot dump heap"
+       "${JMAP}" -F -dump:format=b,file="${dump}" ${PID} \
+               || warn "Cannot dump memory"
+
+       cat << __EOF__
+Dumps are ready:
+Histogram: ${histo}
+Heap:      ${heap}
+Dump:      ${dump}
+__EOF__
+}
+
+usage() {
+       cat << __EOF__
+Usage: $0 [OPTIONS]
+Generate Java heap dump.
+
+    --outdir=dir                 directory to write files into, default tmpdir.
+    --prefix=prefix              files' prefix, default current date.
+    --pid=pid                    pid to dump, default ovirt-engine service.
+__EOF__
+}
+
+JDK_HOME="${JDK_HOME:-/usr}"
+JMAP="${JMAP:-${JDK_HOME}/bin/jmap}"
+OUTDIR="${TMPDIR:-/tmp}"
+PREFIX="$(date +"%Y%m%d%H%M%S")-"
+PID=
+
+while [ -n "$1" ]; do
+       x="$1"
+       v="${x#*=}"
+       shift
+       case "${x}" in
+               --outdir=*)
+                       OUTDIR="${v}"
+               ;;
+               --prefix=*)
+                       PREFIX="${v}"
+               ;;
+               --pid=*)
+                       PID="${v}"
+               ;;
+               --help)
+                       usage
+                       exit 0
+               ;;
+               *)
+                       usage
+                       exit 1
+               ;;
+       esac
+done
+
+[ -x "${JMAP}" ] \
+       || die "The jmap tool is not available. Please install a JDK (inplace 
of a JRE)"
+
+if [ -z "${PID}" ]; then
+       PID="$(pidof ovirt-engine)" || die "The engine is not running"
+fi
+
+dump "${OUTDIR}/${PREFIX}" "${PID}"
+
+exit 0


-- 
To view, visit http://gerrit.ovirt.org/17470
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ic337441123a7129d71c0a90aa4b12c8ec49c03c7
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Alon Bar-Lev <alo...@redhat.com>
Gerrit-Reviewer: Juan Hernandez <juan.hernan...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to