[GRASS-SVN] r42762 - grass-addons/tools
svn_grass at osgeo.org
svn_grass at osgeo.org
Mon Jul 12 02:31:37 EDT 2010
Author: hamish
Date: 2010-07-12 06:31:37 +0000 (Mon, 12 Jul 2010)
New Revision: 42762
Added:
grass-addons/tools/log_cpu.sh
Log:
script to record monitor load
Added: grass-addons/tools/log_cpu.sh
===================================================================
--- grass-addons/tools/log_cpu.sh (rev 0)
+++ grass-addons/tools/log_cpu.sh 2010-07-12 06:31:37 UTC (rev 42762)
@@ -0,0 +1,122 @@
+#!/bin/sh
+############################################################################
+#
+# TOOL: log_cpu.sh
+# AUTHOR: Hamish Bowman, Dunedin, New Zealand
+# PURPOSE: Runs in the background on the server, collects load info
+# for later analysis
+# COPYRIGHT: (c) 2010 Hamish Bowman, and the GRASS Development Team
+# This program is free software under the GNU General Public
+# License (>=v2). Read the file COPYING that comes with GRASS
+# for details.
+#
+#############################################################################
+
+# script to log cpu use etc.
+
+# log every 5 minutes
+interval=300
+
+outfile=~/"cpu_use.`hostname -s`.log"
+
+#echo "Will consume about $((50 * 3600/$interval * 24 / 1024)) kb/day"
+
+echo "#year/day hr:min TZ cpu_1min_avg cpu_5min_avg cpu_15min_avg cpu_hog hog_cpu% free_mem_mb" >> "$outfile"
+
+while [ 1 -eq 1 ] ; do
+ unset TIMESTAMP CPU_USAGE CPU_HOG FREE_MEM
+ TIMESTAMP=`date -u '+%Y/%j %k:%M UTC'`
+ CPU_USAGE=`uptime | sed -e 's/^.*average://' -e 's/,//g' -e 's/^ //'`
+ CPU_HOG=`top -b -n 1 | sed -e '1,7d' | head -n 1 | awk '{print $12 " " $9}'`
+ FREE_MEM=`free -m | grep 'buffers/cache' | awk '{print $4}'`
+ sleep 1
+ echo "$TIMESTAMP $CPU_USAGE $CPU_HOG $FREE_MEM" >> "$outfile"
+ sleep `expr $interval - 1`
+done
+
+
+
+## top load times
+#cat cpu_use.xblade14.log | sort -k4 -r | grep -v '^#' | head -n 20
+## lowest RAM times
+#cat cpu_use.xblade14.log | sort -k9 | grep -v '^#' | head -n 20
+
+
+# #### plot using gnuplot
+# # 5==1min avg, 6==5min avg, 7==15min avg
+# data=7
+#
+# for server in xblade13 xblade14 ; do
+# file=cpu_use.$server
+# cat $file.log | sed -e 's/^#.*//' | cut -f2 -d/ | \
+# tr ':' ' ' | tr -s ' ' | cut -f1-3,$data -d' ' | awk \
+# '{ if(/./) {printf("%f %s\n", $1 + $2/24 + $3/(24*60), $4)} else {print} }' \
+# > $file.prn
+# done
+#
+#
+# ( cat << EOF
+# set terminal svg size 800 480
+# set output "cpuload.svg"
+# set grid
+# set xlabel 'Time (day of year, UTC)'
+# set ylabel 'CPU load (15 minute average)'
+# set title 'xblade loads, May/June 2010'
+# #set label "httpd" at 147.332, 6.5
+# #set label "rsync" at 147.278, 3.9
+# set arrow from 146,1 to 160,1 nohead lt -1 lw 1.75
+#
+# plot "cpu_use.xblade14.prn" title 'xblade14' with lines lt 8, \
+# "cpu_use.xblade13.prn" title 'xblade13' with lines lt 3
+# EOF
+# ) | gnuplot
+#
+# inkscape --file=cpuload.svg --export-png=cpuload.png -b white
+
+
+########
+# Average load:
+# set data=6 in above to look at 5 minute averages (since 5 minute sampling time)
+#
+echo "
+xblade13 = load('cpu_use.xblade13.prn');
+xblade14 = load('cpu_use.xblade14.prn');
+xblade13_mean_load = mean(xblade13(:,2))
+xblade14_mean_load = mean(xblade14(:,2))
+x13_load_gt1 = length(find ( xblade13(:,2) > 1)) / length(xblade13(:,2))
+x14_load_gt1 = length(find ( xblade14(:,2) > 1)) / length(xblade14(:,2))
+" | octave
+#
+#
+# 0.0998 1 % (load is >1.0: 1.5% of the time )
+# 0.5197 52 % (load is >1.0: 10.1% of the time )
+#
+# Matlab plotting code: (perhaps SciPy/NumPy/PyPlot?)
+#
+# clf
+# set(gcf, 'color', 'w')
+# colormap([.5 .5 .5])
+#
+# subplot(211)
+# hist(xblade13(:,2),512)
+# xlim([0 1])
+# xlabel('CPU load (5 minute averages); tail cut off at 1.0')
+# ylabel('number of samples')
+# hT = title({'xblade13 loads, May-July 2010' '' ['Load > 1.0: ' num2str(x13_load_gt1 * 100, '%.1f') '% of the time']});
+# posn = get(hT, 'Position');
+# posn(2) = posn(2) * 0.5;
+# set(hT, 'Position', posn)
+# hL = line([1 1], [0 5000], 'color', 'k', 'LineStyle', ':');
+#
+# subplot(212)
+# hist(xblade14(:,2),255)
+# xlim([0 4])
+# xlabel('CPU load (5 minute averages); tail cut off at 4.0')
+# ylabel('number of samples')
+# hT = title({'xblade14 loads, May-July 2010' '' ['Load > 1.0: ' num2str(x14_load_gt1 * 100, '%.1f') '% of the time']});
+# posn = get(hT, 'Position');
+# posn(2) = posn(2) * 0.5;
+# set(hT, 'Position', posn)
+# hL = line([1 1], [0 1500], 'color', 'k', 'LineStyle', ':');
+#
+
Property changes on: grass-addons/tools/log_cpu.sh
___________________________________________________________________
Added: svn:executable
+ *
Added: svn:mime-type
+ text/x-sh
Added: svn:eol-style
+ native
More information about the grass-commit
mailing list