blob: 4927e3cc01d3d3488e299676bd47d0c49646811f [file] [log] [blame]
# Plots CPU and memory usage graphs from vmstat.log.
# NOTE: vmstat.log must be in current working dir.
#
# Run:
# gnuplot $JIRI_ROOT/release/go/src/v.io/x/ref/services/syncbase/longevity_tests/plot-vmstat
#
# Output:
# cpu.png # cpu usage
# mem.png # memory usage
# Set the timeformat used in the vmstat.log.
set timefmt "%a %d %b %Y %r %Z, %Z"
# X-axis is time.
set xdata time
# Rotate x-axis labels.
set xtics rotate
# Output 800x400px png image.
set term png size 800, 400
# Put key outside plot.
set key outside
# NOTE(nlacasse): The plot functions below plot every 60th row. This is
# probably fine for the memory graph, but for the CPU graph a rolling average
# would be better.
#
# GNUPlot is stream-based, and doesn't have an easy way to calculate rolling
# averages. There is a way to do it [0], but it is very slow, taking many
# minutes on my machine.
#
# We may need to post-process the logs ourselves to calculate the rolling
# average before plotting.
#
# [0]: http://blog.sam.liddicott.com/2013/05/gnuplot-rolling-average.html
set output 'mem.png'
plot 'vmstat.log' every 60::2 using 0:11 with lines title 'swap', \
'vmstat.log' every 60::2 using 0:12 with lines title 'free', \
'vmstat.log' every 60::2 using 0:13 with lines title 'buff', \
'vmstat.log' every 60::2 using 0:14 with lines title 'cache'
set output 'cpu.png'
plot 'vmstat.log' every 60::2 using 0:21 with lines title 'user', \
'vmstat.log' every 60::2 using 0:22 with lines title 'system'