| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- #!/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)
|