batchStats.py 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. #!/usr/bin/env python3
  2. # vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4
  3. import json
  4. import matplotlib.pyplot as plt
  5. import os
  6. import sys
  7. from subprocess import Popen, PIPE
  8. from stats import parseData
  9. bar_width = 0.25
  10. index = []
  11. def plot(stdin):
  12. m_latencies = []
  13. m_ready = []
  14. m_turnaround = []
  15. m_cpu = []
  16. m_cpuio = []
  17. idletime = []
  18. j = json.loads(stdin)
  19. t = {}
  20. t["processes"] = j
  21. m_latencies.append(meanLatency(t))
  22. m_ready.append(meanReady(t))
  23. m_turnaround.append(meanTA(t))
  24. m_cpu.append(meanCPU(t))
  25. m_cpuio.append(meanCPUIO(t))
  26. print('M. Latency: ', m_latencies)
  27. print('M. Ready: ', m_ready)
  28. print('M. Turnaround: ', m_turnaround)
  29. print('M. CPU: ', m_cpu)
  30. print('M. CPU+IO: ', m_cpuio)
  31. print('Idle: ', idletime)
  32. m = 0
  33. for p in t["processes"]:
  34. m = max(m, p["ultimoTick"])
  35. print('Throughput: ' ,len(t["processes"])/m)
  36. return
  37. def meanLatency(pl):
  38. totLatency = sum([ latency(p) for p in pl["processes"]])
  39. mean = totLatency / len(pl["processes"])
  40. return mean
  41. def meanTA(pl):
  42. totTA = sum([ turnaround(p) for p in pl["processes"]])
  43. mean = totTA / len(pl["processes"])
  44. return mean
  45. def meanReady(pl):
  46. totReady = sum([ ready(p) for p in pl["processes"]])
  47. mean = totReady / len(pl["processes"])
  48. return mean
  49. def meanCPU(pl):
  50. totCPU = sum([ cpu(p) for p in pl["processes"]])
  51. mean = totCPU / len(pl["processes"])
  52. return mean
  53. def meanCPUIO(pl):
  54. totCPUIO = sum([ cpu_io(p) for p in pl["processes"]])
  55. mean = totCPUIO / len(pl["processes"])
  56. return mean
  57. def latency(p):
  58. return p["primerTick"]-p["cargaTick"]
  59. def turnaround(p):
  60. return p["ultimoTick"]-p["primerTick"]
  61. def ready(p):
  62. return (p["ultimoTick"]-p["primerTick"])-(p["ticksBlock"]+p["ticksCpu"])+(p["primerTick"]-p["cargaTick"])
  63. def cpu(p):
  64. return p["ticksCpu"]
  65. def cpu_io(p):
  66. return p["ticksBlock"]+p["ticksCpu"]
  67. def plot_data(ind, data, color, label):
  68. opacity = 1
  69. plt.bar([i + bar_width*ind for i in index],
  70. data,
  71. bar_width,
  72. alpha=opacity,
  73. color=color,
  74. label=(label))
  75. def main(argv):
  76. if len(argv) <= 1:
  77. fin = sys.stdin.read()
  78. else:
  79. return 1
  80. plot(fin)
  81. return 0
  82. if __name__ == "__main__":
  83. main(sys.argv)