aboutsummaryrefslogtreecommitdiffstats
path: root/parse/sched.py
diff options
context:
space:
mode:
authorGlenn Elliott <gelliott@cs.unc.edu>2014-01-17 22:16:42 -0500
committerGlenn Elliott <gelliott@cs.unc.edu>2014-01-17 22:16:42 -0500
commitc6106e3eb375824fc20604ddfa845e6d8baa5198 (patch)
tree905686602f6892832e5edb6c89122491050f3bd4 /parse/sched.py
parent69bdd9a6095fbd85cc90447862cc898c3391b3a7 (diff)
BUG FIX: TimeTracker average computation
The formula for computing the running average was incorrect. This patch fixes that. It also renames the putput fields to make grouping similar values on the screen (by lexical order) easier.
Diffstat (limited to 'parse/sched.py')
-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():