aboutsummaryrefslogtreecommitdiffstats
path: root/parse
diff options
context:
space:
mode:
Diffstat (limited to 'parse')
-rw-r--r--parse/sched.py69
1 files changed, 35 insertions, 34 deletions
diff --git a/parse/sched.py b/parse/sched.py
index 0ab16ce..d773c8a 100644
--- a/parse/sched.py
+++ b/parse/sched.py
@@ -44,9 +44,9 @@ class TimeTracker:
44 dur = etime - stime 44 dur = etime - stime
45 if self.validator(dur): 45 if self.validator(dur):
46 self.max = max(self.max, dur) 46 self.max = max(self.max, dur)
47 self.avg *= float(self.num / (self.num + 1)) 47 old_avg = self.avg * self.num
48 self.num += 1 48 self.num += 1
49 self.avg += dur / float(self.num) 49 self.avg = (old_avg + dur) / float(self.num)
50 50
51 # Give up on some jobs if they've been hanging around too long. 51 # Give up on some jobs if they've been hanging around too long.
52 # While not strictly needed, it helps improve performance and 52 # While not strictly needed, it helps improve performance and
@@ -248,12 +248,13 @@ class ReleaseRecord(SchedRecord):
248 data.pgm_misses.start_time(self, self.deadline) 248 data.pgm_misses.start_time(self, self.deadline)
249 data.pgm_lateness.start_time(self, self.deadline) 249 data.pgm_lateness.start_time(self, self.deadline)
250 250
251 ntype = task_dict[self.pid].pgm_params.node_type 251 if data.pgm_params:
252 if ntype == PGM_SRC or ntype == PGM_SRC_SINK: 252 ntype = data.pgm_params.node_type
253 gid = task_dict[self.pid].pgm_params.gid 253 if ntype == PGM_SRC or ntype == PGM_SRC_SINK:
254 gdata = graph_dict[gid] 254 gid = data.pgm_params.gid
255 gdata.jobs += 1 255 gdata = graph_dict[gid]
256 gdata.response.start_time(self, self.when) 256 gdata.jobs += 1
257 gdata.response.start_time(self, self.when)
257 258
258class CompletionRecord(SchedRecord): 259class CompletionRecord(SchedRecord):
259 FIELDS = [('when', c_uint64)] 260 FIELDS = [('when', c_uint64)]
@@ -422,38 +423,38 @@ def extract_sched_data(result, data_dir, work_dir):
422 # start with basic task information 423 # start with basic task information
423 stat_data["miss-ratio" ].append(miss_ratio) 424 stat_data["miss-ratio" ].append(miss_ratio)
424 425
425 stat_data["max-response"].append(float(response.max)/NSEC_PER_MSEC) 426 stat_data["response-max"].append(float(response.max)/NSEC_PER_MSEC)
426 stat_data["avg-response"].append(response.avg/NSEC_PER_MSEC) 427 stat_data["response-avg"].append(response.avg/NSEC_PER_MSEC)
427 stat_data["max-response-prop"].append(float(response.max) / tdata.params.period) 428 stat_data["response-prop-max"].append(float(response.max) / tdata.params.period)
428 stat_data["avg-response-prop"].append(response.avg / tdata.params.period) 429 stat_data["response-prop-avg"].append(response.avg / tdata.params.period)
429 430
430 stat_data["max-tard"].append(float(miss.max)/NSEC_PER_MSEC) 431 stat_data["tard-max"].append(float(miss.max)/NSEC_PER_MSEC)
431 stat_data["avg-tard"].append(avg_tard/NSEC_PER_MSEC) 432 stat_data["tard-avg"].append(avg_tard/NSEC_PER_MSEC)
432 stat_data["max-tard-prop"].append(float(miss.max) / tdata.params.period) 433 stat_data["tard-prop-max"].append(float(miss.max) / tdata.params.period)
433 stat_data["avg-tard-prop"].append(avg_tard / tdata.params.period) 434 stat_data["tard-prop-avg"].append(avg_tard / tdata.params.period)
434 435
435 stat_data["max-response"].append(float(lateness.max)/NSEC_PER_MSEC) 436 stat_data["lateness-max"].append(float(lateness.max)/NSEC_PER_MSEC)
436 stat_data["avg-response"].append(lateness.avg/NSEC_PER_MSEC) 437 stat_data["lateness-avg"].append(lateness.avg/NSEC_PER_MSEC)
437 stat_data["max-response-prop"].append(float(lateness.max) / tdata.params.period) 438 stat_data["lateness-prop-max"].append(float(lateness.max) / tdata.params.period)
438 stat_data["avg-response-prop"].append(lateness.avg / tdata.params.period) 439 stat_data["lateness-prop-avg"].append(lateness.avg / tdata.params.period)
439 440
440 # same data, but with PGM-adjusted release times (shifted deadlines) 441 # same data, but with PGM-adjusted release times (shifted deadlines)
441 stat_data["pgm-miss-ratio" ].append(pgm_miss_ratio) 442 stat_data["pgm-miss-ratio" ].append(pgm_miss_ratio)
442 443
443 stat_data["pgm-max-response"].append(float(pgm_response.max)/NSEC_PER_MSEC) 444 stat_data["pgm-response-max"].append(float(pgm_response.max)/NSEC_PER_MSEC)
444 stat_data["pgm-avg-response"].append(pgm_response.avg/NSEC_PER_MSEC) 445 stat_data["pgm-response-avg"].append(pgm_response.avg/NSEC_PER_MSEC)
445 stat_data["pgm-max-response-prop"].append(float(pgm_response.max) / tdata.params.period) 446 stat_data["pgm-response-prop-max"].append(float(pgm_response.max) / tdata.params.period)
446 stat_data["pgm-avg-response-prop"].append(pgm_response.avg / tdata.params.period) 447 stat_data["pgm-response-prop-avg"].append(pgm_response.avg / tdata.params.period)
447 448
448 stat_data["pgm-max-tard"].append(float(pgm_miss.max)/NSEC_PER_MSEC) 449 stat_data["pgm-tard-max"].append(float(pgm_miss.max)/NSEC_PER_MSEC)
449 stat_data["pgm-avg-tard"].append(pgm_avg_tard/NSEC_PER_MSEC) 450 stat_data["pgm-tard-avg"].append(pgm_avg_tard/NSEC_PER_MSEC)
450 stat_data["pgm-max-tard-prop"].append(float(pgm_miss.max) / tdata.params.period) 451 stat_data["pgm-tard-prop-max"].append(float(pgm_miss.max) / tdata.params.period)
451 stat_data["pgm-avg-tard-prop"].append(pgm_avg_tard / tdata.params.period) 452 stat_data["pgm-tard-prop-avg"].append(pgm_avg_tard / tdata.params.period)
452 453
453 stat_data["pgm-max-response"].append(float(pgm_lateness.max)/NSEC_PER_MSEC) 454 stat_data["pgm-lateness-max"].append(float(pgm_lateness.max)/NSEC_PER_MSEC)
454 stat_data["pgm-avg-response"].append(pgm_lateness.avg/NSEC_PER_MSEC) 455 stat_data["pgm-lateness-avg"].append(pgm_lateness.avg/NSEC_PER_MSEC)
455 stat_data["pgm-max-response-prop"].append(float(pgm_lateness.max) / tdata.params.period) 456 stat_data["pgm-lateness-prop-max"].append(float(pgm_lateness.max) / tdata.params.period)
456 stat_data["pgm-avg-response-prop"].append(pgm_lateness.avg / tdata.params.period) 457 stat_data["pgm-lateness-prop-avg"].append(pgm_lateness.avg / tdata.params.period)
457 458
458 for gid, gdata in graph_dict.iteritems(): 459 for gid, gdata in graph_dict.iteritems():
459 if not gdata.params: 460 if not gdata.params:
@@ -469,8 +470,8 @@ def extract_sched_data(result, data_dir, work_dir):
469 log_once(LOSS_MSG) 470 log_once(LOSS_MSG)
470 continue 471 continue
471 472
472 gstat_data["graph-max-response"].append(float(response.max)/NSEC_PER_MSEC) 473 gstat_data["graph-response-max"].append(float(response.max)/NSEC_PER_MSEC)
473 gstat_data["graph-avg-response"].append(response.avg/NSEC_PER_MSEC) 474 gstat_data["graph-response-avg"].append(response.avg/NSEC_PER_MSEC)
474 475
475 # Summarize value groups 476 # Summarize value groups
476 for name, data in stat_data.iteritems(): 477 for name, data in stat_data.iteritems():