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