diff options
author | Glenn Elliott <gelliott@cs.unc.edu> | 2013-09-27 13:44:08 -0400 |
---|---|---|
committer | Glenn Elliott <gelliott@cs.unc.edu> | 2014-02-19 15:33:40 -0500 |
commit | 36bd5c4bb70936815c5273aef8bee1cafccf1a1a (patch) | |
tree | 3d0f89762b51de4bd4bd75546d0c107404662645 /litmus | |
parent | e01b6a8b49bf5c8f3a53b260b9d625a2321e4f42 (diff) |
Tracing for PGM release/deadline adjustment.
Patch adds tracing of job release/deadline adjustments
of PGM tasks. Tracing is separate from regular job tracing
so that we many observe the magnitude of adjustments/slippage.
Diffstat (limited to 'litmus')
-rw-r--r-- | litmus/pgm.c | 3 | ||||
-rw-r--r-- | litmus/sched_task_trace.c | 12 |
2 files changed, 14 insertions, 1 deletions
diff --git a/litmus/pgm.c b/litmus/pgm.c index f8b857de8118..2bfa8d0843c1 100644 --- a/litmus/pgm.c +++ b/litmus/pgm.c | |||
@@ -4,6 +4,7 @@ | |||
4 | #include <linux/sched.h> | 4 | #include <linux/sched.h> |
5 | #include <litmus/litmus.h> | 5 | #include <litmus/litmus.h> |
6 | #include <litmus/pgm.h> | 6 | #include <litmus/pgm.h> |
7 | #include <litmus/sched_trace.h> | ||
7 | 8 | ||
8 | /* Only readjust release/deadline if difference is over a given threshold. | 9 | /* Only readjust release/deadline if difference is over a given threshold. |
9 | It's a weak method for accounting overheads. Ideally, we'd know the last | 10 | It's a weak method for accounting overheads. Ideally, we'd know the last |
@@ -51,4 +52,6 @@ void setup_pgm_release(struct task_struct* t) | |||
51 | "cur time = %llu, release time = %llu\n", | 52 | "cur time = %llu, release time = %llu\n", |
52 | now, tsk_rt(t)->job_params.release); | 53 | now, tsk_rt(t)->job_params.release); |
53 | } | 54 | } |
55 | |||
56 | sched_trace_pgm_release(t); | ||
54 | } | 57 | } |
diff --git a/litmus/sched_task_trace.c b/litmus/sched_task_trace.c index 933e7e4c7094..422314f29a60 100644 --- a/litmus/sched_task_trace.c +++ b/litmus/sched_task_trace.c | |||
@@ -231,10 +231,20 @@ feather_callback void do_sched_trace_action(unsigned long id, | |||
231 | { | 231 | { |
232 | struct task_struct *t = (struct task_struct*) _task; | 232 | struct task_struct *t = (struct task_struct*) _task; |
233 | struct st_event_record* rec = get_record(ST_ACTION, t); | 233 | struct st_event_record* rec = get_record(ST_ACTION, t); |
234 | |||
235 | if (rec) { | 234 | if (rec) { |
236 | rec->data.action.when = now(); | 235 | rec->data.action.when = now(); |
237 | rec->data.action.action = action; | 236 | rec->data.action.action = action; |
238 | put_record(rec); | 237 | put_record(rec); |
239 | } | 238 | } |
240 | } | 239 | } |
240 | |||
241 | feather_callback void do_sched_trace_pgm_release(unsigned long id, unsigned long _task) | ||
242 | { | ||
243 | struct task_struct *t = (struct task_struct*) _task; | ||
244 | struct st_event_record* rec = get_record(ST_PGM_RELEASE, t); | ||
245 | if (rec) { | ||
246 | rec->data.release.release = get_release(t); | ||
247 | rec->data.release.deadline = get_deadline(t); | ||
248 | put_record(rec); | ||
249 | } | ||
250 | } | ||