diff options
Diffstat (limited to 'parse')
| -rw-r--r-- | parse/sched.py | 69 |
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 | ||
| 258 | class CompletionRecord(SchedRecord): | 259 | class 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(): |
