|
@@ -0,0 +1,69 @@
|
|
|
|
|
+#!/usr/bin/env python
|
|
|
|
|
+# coding: utf-8
|
|
|
|
|
+
|
|
|
|
|
+import re, sys, os
|
|
|
|
|
+from pprint import pprint
|
|
|
|
|
+
|
|
|
|
|
+from PIL import Image, ImageDraw, ImageFont
|
|
|
|
|
+
|
|
|
|
|
+# Acciones validas
|
|
|
|
|
+CMDS = ['LOAD', 'CPU', 'BLOCK', 'UNBLOCK', 'EXIT', 'DEADLINE']
|
|
|
|
|
+
|
|
|
|
|
+def parseData(fin):
|
|
|
|
|
+ ln = 0
|
|
|
|
|
+ result = []
|
|
|
|
|
+
|
|
|
|
|
+ for l in fin:
|
|
|
|
|
+ ln+=1
|
|
|
|
|
+ vls = l.split()
|
|
|
|
|
+
|
|
|
|
|
+ # Si no es un comando valido
|
|
|
|
|
+ if (vls[0] not in CMDS):
|
|
|
|
|
+ # sys.stderr.write('Warning: Ignoring line %d: %s' % (ln, l))
|
|
|
|
|
+ continue
|
|
|
|
|
+
|
|
|
|
|
+ # Parseo los datos estos
|
|
|
|
|
+ accion = vls[0]
|
|
|
|
|
+ tick = int(vls[1])
|
|
|
|
|
+ proceso = int(vls[2])
|
|
|
|
|
+
|
|
|
|
|
+ # Ignoro a idle
|
|
|
|
|
+ if proceso == -1:
|
|
|
|
|
+ continue
|
|
|
|
|
+
|
|
|
|
|
+ # Empiezo a contar cuando carga un proceso
|
|
|
|
|
+ if accion == 'LOAD':
|
|
|
|
|
+ # result[i] = Proceso
|
|
|
|
|
+ result.append({'cargaTick': tick, 'primerTick': 0, 'ultimoTick': 0, 'ticksCpu': 0, 'ticksBlock': 0 })
|
|
|
|
|
+
|
|
|
|
|
+ # Tick CPU
|
|
|
|
|
+ if accion == 'CPU':
|
|
|
|
|
+ if result[proceso]['ticksCpu'] == 0:
|
|
|
|
|
+ result[proceso]['primerTick'] = tick
|
|
|
|
|
+ result[proceso]['ticksCpu'] +=1
|
|
|
|
|
+
|
|
|
|
|
+ # Tick Block
|
|
|
|
|
+ if accion == 'BLOCK':
|
|
|
|
|
+ result[proceso]['ticksBlock'] += 1
|
|
|
|
|
+
|
|
|
|
|
+ if accion == 'UNBLOCK':
|
|
|
|
|
+ result[proceso]['ticksBlock'] -= 1
|
|
|
|
|
+
|
|
|
|
|
+ if accion == 'EXIT':
|
|
|
|
|
+ result[proceso]['ultimoTick'] = tick
|
|
|
|
|
+
|
|
|
|
|
+ #Sobra una ronda de cores idles
|
|
|
|
|
+ return result
|
|
|
|
|
+
|
|
|
|
|
+def main(argv):
|
|
|
|
|
+ if len(argv) <= 1:
|
|
|
|
|
+ fin = sys.stdin
|
|
|
|
|
+ else:
|
|
|
|
|
+ return 1
|
|
|
|
|
+
|
|
|
|
|
+ data = parseData(fin)
|
|
|
|
|
+ pprint (data)
|
|
|
|
|
+ return 0
|
|
|
|
|
+
|
|
|
|
|
+if __name__ == "__main__":
|
|
|
|
|
+ main(sys.argv)
|