Page MenuHomec4science

trace-statistics.py
No OneTemporary

File Metadata

Created
Tue, Feb 25, 04:24

trace-statistics.py

import json
import pprint
import sys
import re
#shameless copy paste from json/decoder.py
FLAGS = re.VERBOSE | re.MULTILINE | re.DOTALL
WHITESPACE = re.compile(r'[ \t\n\r]*', FLAGS)
class ConcatJSONDecoder(json.JSONDecoder):
def decode(self, s, _w=WHITESPACE.match):
s_len = len(s)
objs = []
end = 0
while end != s_len:
obj, end = self.raw_decode(s, idx=_w(s, end).end())
end = _w(s, end).end()
objs.append(obj)
return objs
all_total_tasks = 0
all_total_jobs = 0
all_sum_task_dur = 0
all_sum_task_mem = 0
for file in sys.argv[1:]:
total_tasks = 0
total_jobs = 0
sum_task_dur = 0
sum_task_mem = 0
min_task_dur = -1
max_task_dur = -1
min_task_mem = -1
max_task_mem = -1
tasks_per_job = []
print " **** FILE: " + file + " **** "
with open(file, "r") as f:
data = json.load(f, cls=ConcatJSONDecoder)
for job in data:
for task in job[u'job.tasks']:
nr_tasks = task[u'c.nr']
task_dur = task[u'c.dur']
task_mem = task[u'c.mem']
total_tasks += int(nr_tasks)
sum_task_dur += int(nr_tasks * task_dur)
sum_task_mem += int(nr_tasks * task_mem)
if task_dur < min_task_dur or min_task_dur == -1:
min_task_dur = task_dur
if task_dur > max_task_dur or max_task_dur == -1:
max_task_dur = task_dur
if task_mem < min_task_mem or min_task_mem == -1:
min_task_mem = task_mem
if task_mem > max_task_mem or max_task_mem == -1:
max_task_mem = task_mem
tasks_per_job.append(total_tasks)
total_jobs += 1
all_total_jobs += total_jobs
all_total_tasks += total_tasks
all_sum_task_dur += sum_task_dur
all_sum_task_mem += sum_task_mem
print "Total number of jobs: " + str(total_jobs)
print "Total number of tasks: " + str(total_tasks)
print "Tasks per job (average): " + str(total_tasks / total_jobs)
print "Task duration [min, weighted avg, max]: [" + str(min_task_dur) + ", " + str(sum_task_dur / total_tasks) + ", " + str(max_task_dur) + "]"
print "Task memory [min, weighted avg, max]: [" + str(min_task_mem) + ", " + str(sum_task_mem / total_tasks) + ", " + str(max_task_mem) + "]"
print "============================================================"
print "Total number of jobs (all traces): " + str(all_total_jobs)
print "Total number of tasks (all traces): " + str(all_total_tasks)
print "Total tasks per job (average): " + str(all_total_tasks / all_total_jobs)
print "Task duration (weighted avg) (all traces): " + str(all_sum_task_dur / all_total_tasks)
print "Task memory (weighted avg) (all traces): " + str(all_sum_task_mem / all_total_tasks)
print "============================================================"

Event Timeline