Skip to content

Instantly share code, notes, and snippets.

@holyjak holyjak/
Last active Oct 18, 2018

What would you like to do?
Gnuplot script to plot memory, CPU usage of a process from `top`
#!/usr/bin/env gnuplot --persist -c
# Plot memory and CPU usage over time. Usage:
# <input file> [<output .png file>]
# where the input file has the columns `<unix time> <memory, with m/g suffix> <% cpu>`
# To create the input file, see
# Arguments:
set term x11
set title 'Memory, CPU usage from' . infile
set xdata time
set timefmt "%s"
set xlabel "Time [[hh:]mm:ss]"
set ylabel "Memory usage"
set format y '%.1s%cB'
set y2label 'CPU usage'
set format y2 '%.0s%%'
set y2tics nomirror
set tics out
set autoscale y
set autoscale y2
# Credit: Christoph @
resolveUnit(s)=(pos=strstrt("kmgtp",s[strlen(s):*]), real(s)*(1024**pos))
if (exists("outfile") && strlen(outfile) > 0) {
print "Outputting to the file ", outfile
set term png # 640,480
set output outfile
# Styling
set style line 1 linewidth 2 linecolor 'blue'
set style line 2 linecolor 'light-green'
#set xtics font ", 10"
set tics font ", 10"
set xtics rotate 60 # put label every 60s, make vertical so they don't clash in .png if too many
plot infile u 1:3 with lp axes x1y2 title "cpu" linestyle 2, \
infile using 1:(resolveUnit(stringcolumn(2))) with linespoints title "memory" linestyle 1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.