aboutsummaryrefslogtreecommitdiffstats
path: root/litmus
diff options
context:
space:
mode:
authorGlenn Elliott <gelliott@cs.unc.edu>2013-09-27 13:44:08 -0400
committerGlenn Elliott <gelliott@cs.unc.edu>2014-02-19 15:33:40 -0500
commit36bd5c4bb70936815c5273aef8bee1cafccf1a1a (patch)
tree3d0f89762b51de4bd4bd75546d0c107404662645 /litmus
parente01b6a8b49bf5c8f3a53b260b9d625a2321e4f42 (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.c3
-rw-r--r--litmus/sched_task_trace.c12
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
241feather_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}