From f59d41cdeccd44e6ee3c438a165d833474a13988 Mon Sep 17 00:00:00 2001 From: Joachim Nilsson Date: Mon, 22 Jan 2018 08:41:42 +0100 Subject: [PATCH] Add silly process monitor script to distribution. Signed-off-by: Joachim Nilsson --- contrib/Makefile.am | 2 +- contrib/procmon.sh | 51 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+), 1 deletion(-) create mode 100755 contrib/procmon.sh diff --git a/contrib/Makefile.am b/contrib/Makefile.am index 19522208..0656df81 100644 --- a/contrib/Makefile.am +++ b/contrib/Makefile.am @@ -1,4 +1,4 @@ SUBDIRS = alpine debian void docsdir := @docdir@/contrib -docs_DATA = README.md finit.conf +docs_DATA = README.md finit.conf procmon.sh EXTRA_DIST = $(docs_DATA) diff --git a/contrib/procmon.sh b/contrib/procmon.sh new file mode 100755 index 00000000..3a085a53 --- /dev/null +++ b/contrib/procmon.sh @@ -0,0 +1,51 @@ +#!/bin/sh +USAGE="Usage: $0 processName" +LOG_FILE="/tmp/memusage.csv" +ELAPSED_TIME=0 +PERIOD=1 # seconds + +if [ $# -ne 1 ]; then + echo $USAGE + exit 1 +fi + +echo "ElapsedTime,VmSize,VmRSS" > $LOG_FILE + +# Monitor memory usage forever until script is killed +while : +do + SUM_VM_SIZE=0 + SUM_RSS_SIZE=0 + # In case the monitored process has not yet started + # keep searching until its PID is found + PROCESS_PIDS="" + while : + do + PROCESS_PIDS=`/bin/pidof $1` + if [ "$PROCESS_PIDS.X" != ".X" ]; then + break + fi + done + + for PID in ${PROCESS_PIDS} ; do + VM_SIZE=`awk '/VmSize/ {print $2}' < /proc/$PID/status` + if [ "$VM_SIZE.X" = ".X" ]; then + continue + fi + #echo exprVM_ $SUM_VM_SIZE + $VM_SIZE + SUM_VM_SIZE=`expr $SUM_VM_SIZE + $VM_SIZE` + + VM_RSS=`awk '/VmRSS/ {print $2}' < /proc/$PID/status` + if [ "$VM_RSS.X" = ".X" ]; then + continue + fi + SUM_RSS_SIZE=`expr $SUM_RSS_SIZE + $VM_RSS` + done + echo "$ELAPSED_TIME sec, $SUM_VM_SIZE KB, $SUM_RSS_SIZE KB" + echo "$ELAPSED_TIME,$SUM_VM_SIZE,$SUM_RSS_SIZE" >> $LOG_FILE + sleep $PERIOD + VM_SIZE="" + VM_RSS="" + # Needs to get actual elapsed time instead of doing this + ELAPSED_TIME=`expr $ELAPSED_TIME + $PERIOD` +done