From 0d03e5721a38a39f7dbe546d821381061fbdd472 Mon Sep 17 00:00:00 2001 From: Arvid Norberg Date: Mon, 17 Sep 2007 08:54:12 +0000 Subject: [PATCH] made log parser generate throughput graph as well --- parse_disk_log.py | 36 +++++++++++++++++++++++++++++------- 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/parse_disk_log.py b/parse_disk_log.py index 33e82fb0f..779497ba4 100644 --- a/parse_disk_log.py +++ b/parse_disk_log.py @@ -2,11 +2,12 @@ import os, sys, time lines = open(sys.argv[1], 'rb').readlines() -time_limit = -1 -if len(sys.argv) > 2: - time_limit = long(sys.argv[2]) +if len(sys.argv) < 2: + print "usage: parse_disk_log.py logfile [seconds]" + sys.exit(1) keys = ['write', 'read', 'hash', 'move', 'release', 'idle'] +throughput_keys = ['write', 'read'] # logfile format: # @@ -14,14 +15,20 @@ keys = ['write', 'read', 'hash', 'move', 'release', 'idle'] # 34523 idle # 34722 write -quantization = 5000 +if len(sys.argv) > 2: + quantization = long(sys.argv[2]) * 1000 +else: + quantization = 5000 out = open('disk_io.dat', 'wb') +out2 = open('disk_throughput.dat', 'wb') state = 'idle' time = 0 i = 0 state_timer = {} +throughput = {} for k in keys: state_timer[k] = 0 +for k in throughput_keys: throughput[k] = 0 for l in lines: l = l[:-1].split(' ') if len(l) < 2: @@ -35,21 +42,36 @@ for l in lines: time = i for k in keys: print >>out, state_timer[k], print >>out + for k in throughput_keys: print >>out2, throughput[k] / 1000., + print >>out2 for k in keys: state_timer[k] = 0 + for k in throughput_keys: throughput[k] = 0 state_timer[state] += new_time - time time = new_time state = l[1] + if state in throughput_keys: + throughput[state] += long(l[2]) except: print l out.close() - +out2.close() out = open('disk_io.gnuplot', 'wb') print >>out, "set term png size 1200,700" + +print >>out, 'set output "disk_throughput.png"' +print >>out, 'set title "disk throughput per %s second(s)"' % (quantization / 1000) +print >>out, 'set ylabel "throughput (kB)"' +print >>out, 'plot', +i = 0 +for k in throughput_keys: + print >>out, ' "disk_throughput.dat" using %d title "%s" with lines,' % (i + 1, throughput_keys[i]), + i = i + 1 +print >>out, 'x=0' + print >>out, 'set output "disk_io.png"' -print >>out, 'set xrange [0:*]' print >>out, 'set ylabel "time (ms)"' -print >>out, "set style data lines" +print >>out, 'set xrange [0:*]' print >>out, 'set title "disk io utilization per %s second(s)"' % (quantization / 1000) print >>out, "set key box" print >>out, "set style data histogram"