|
|
@@ -0,0 +1,106 @@
|
|
|
+#!/usr/bin/env python3
|
|
|
+# vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4
|
|
|
+import json
|
|
|
+import matplotlib.pyplot as plt
|
|
|
+import os
|
|
|
+import sys
|
|
|
+from subprocess import Popen, PIPE
|
|
|
+from stats import parseData
|
|
|
+
|
|
|
+bar_width = 0.25
|
|
|
+index = []
|
|
|
+def plot(stdin):
|
|
|
+ m_latencies = []
|
|
|
+ m_ready = []
|
|
|
+ m_turnaround = []
|
|
|
+ m_cpu = []
|
|
|
+ m_cpuio = []
|
|
|
+ idletime = []
|
|
|
+
|
|
|
+ j = json.loads(stdin)
|
|
|
+ t = {}
|
|
|
+ t["processes"] = j
|
|
|
+
|
|
|
+ m_latencies.append(meanLatency(t))
|
|
|
+ m_ready.append(meanReady(t))
|
|
|
+ m_turnaround.append(meanTA(t))
|
|
|
+ m_cpu.append(meanCPU(t))
|
|
|
+ m_cpuio.append(meanCPUIO(t))
|
|
|
+
|
|
|
+ print('M. Latency: ', m_latencies)
|
|
|
+ print('M. Ready: ', m_ready)
|
|
|
+ print('M. Turnaround: ', m_turnaround)
|
|
|
+ print('M. CPU: ', m_cpu)
|
|
|
+ print('M. CPU+IO: ', m_cpuio)
|
|
|
+ print('Idle: ', idletime)
|
|
|
+
|
|
|
+ m = 0
|
|
|
+ for p in t["processes"]:
|
|
|
+ m = max(m, p["ultimoTick"])
|
|
|
+
|
|
|
+ print('Throughput: ' ,len(t["processes"])/m)
|
|
|
+
|
|
|
+ return
|
|
|
+
|
|
|
+
|
|
|
+def meanLatency(pl):
|
|
|
+ totLatency = sum([ latency(p) for p in pl["processes"]])
|
|
|
+ mean = totLatency / len(pl["processes"])
|
|
|
+ return mean
|
|
|
+
|
|
|
+def meanTA(pl):
|
|
|
+ totTA = sum([ turnaround(p) for p in pl["processes"]])
|
|
|
+ mean = totTA / len(pl["processes"])
|
|
|
+ return mean
|
|
|
+
|
|
|
+def meanReady(pl):
|
|
|
+ totReady = sum([ ready(p) for p in pl["processes"]])
|
|
|
+ mean = totReady / len(pl["processes"])
|
|
|
+ return mean
|
|
|
+
|
|
|
+def meanCPU(pl):
|
|
|
+ totCPU = sum([ cpu(p) for p in pl["processes"]])
|
|
|
+ mean = totCPU / len(pl["processes"])
|
|
|
+ return mean
|
|
|
+
|
|
|
+def meanCPUIO(pl):
|
|
|
+ totCPUIO = sum([ cpu_io(p) for p in pl["processes"]])
|
|
|
+ mean = totCPUIO / len(pl["processes"])
|
|
|
+ return mean
|
|
|
+
|
|
|
+def latency(p):
|
|
|
+ return p["primerTick"]-p["cargaTick"]
|
|
|
+
|
|
|
+def turnaround(p):
|
|
|
+ return p["ultimoTick"]-p["primerTick"]
|
|
|
+
|
|
|
+def ready(p):
|
|
|
+ return (p["ultimoTick"]-p["primerTick"])-(p["ticksBlock"]+p["ticksCpu"])+(p["primerTick"]-p["cargaTick"])
|
|
|
+
|
|
|
+def cpu(p):
|
|
|
+ return p["ticksCpu"]
|
|
|
+
|
|
|
+def cpu_io(p):
|
|
|
+ return p["ticksBlock"]+p["ticksCpu"]
|
|
|
+
|
|
|
+def plot_data(ind, data, color, label):
|
|
|
+ opacity = 1
|
|
|
+ plt.bar([i + bar_width*ind for i in index],
|
|
|
+ data,
|
|
|
+ bar_width,
|
|
|
+ alpha=opacity,
|
|
|
+ color=color,
|
|
|
+ label=(label))
|
|
|
+
|
|
|
+def main(argv):
|
|
|
+ if len(argv) <= 1:
|
|
|
+ fin = sys.stdin.read()
|
|
|
+ else:
|
|
|
+ return 1
|
|
|
+
|
|
|
+ plot(fin)
|
|
|
+ return 0
|
|
|
+
|
|
|
+if __name__ == "__main__":
|
|
|
+ main(sys.argv)
|
|
|
+
|