Explorar el Código

Merge branch 'master' of ssh://gogs.davidventura.com.ar:443/david/so-tp1

David hace 10 años
padre
commit
47ceb2effc
Se han modificado 1 ficheros con 106 adiciones y 0 borrados
  1. 106 0
      scripts/batchStats.py

+ 106 - 0
scripts/batchStats.py

@@ -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)
+