mirror of
https://github.com/troglobit/finit.git
synced 2026-09-30 13:02:37 +07:00
52 lines
1.5 KiB
Bash
Executable File
52 lines
1.5 KiB
Bash
Executable File
#!/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
|