Forráskód Böngészése

Añadido script para parsear salida

Fabian 10 éve
szülő
commit
02b3b2884c
1 módosított fájl, 69 hozzáadás és 0 törlés
  1. 69 0
      scripts/stats.py

+ 69 - 0
scripts/stats.py

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