diff options
author | Jonathan Herman <hermanjl@cs.unc.edu> | 2012-05-09 17:11:56 -0400 |
---|---|---|
committer | Jonathan Herman <hermanjl@cs.unc.edu> | 2012-09-27 15:43:25 -0400 |
commit | 2821fbab349aa7a7846f3a9a226988c38969fa38 (patch) | |
tree | e8d44e8966a3dd7c67db11a05896c480ab9a3b6c /litmus | |
parent | f299a6944bfdfe70ddc8b9993f1ec3eb5d18d796 (diff) |
Track tasks average execution time, drop in TASK_EXIT record
Conflicts:
include/litmus/rt_param.h
litmus/jobs.c
litmus/sched_color.c
litmus/sched_task_trace.c
Diffstat (limited to 'litmus')
-rw-r--r-- | litmus/jobs.c | 11 | ||||
-rw-r--r-- | litmus/sched_task_trace.c | 3 |
2 files changed, 8 insertions, 6 deletions
diff --git a/litmus/jobs.c b/litmus/jobs.c index fb093c03d53d..50728a416c6c 100644 --- a/litmus/jobs.c +++ b/litmus/jobs.c | |||
@@ -8,13 +8,14 @@ | |||
8 | 8 | ||
9 | static inline void setup_release(struct task_struct *t, lt_t release) | 9 | static inline void setup_release(struct task_struct *t, lt_t release) |
10 | { | 10 | { |
11 | /* prepare next release */ | 11 | tsk_rt(t)->tot_exec_time += tsk_rt(t)->job_params.exec_time; |
12 | t->rt_param.job_params.release = release; | ||
13 | t->rt_param.job_params.deadline = release + get_rt_relative_deadline(t); | ||
14 | t->rt_param.job_params.exec_time = 0; | ||
15 | 12 | ||
13 | /* prepare next release */ | ||
14 | tsk_rt(t)->job_params.release = tsk_rt(t)->job_params.deadline; | ||
15 | tsk_rt(t)->job_params.deadline += get_rt_period(t); | ||
16 | tsk_rt(t)->job_params.exec_time = 0; | ||
16 | /* update job sequence number */ | 17 | /* update job sequence number */ |
17 | t->rt_param.job_params.job_no++; | 18 | tsk_rt(t)->job_params.job_no++; |
18 | 19 | ||
19 | /* don't confuse Linux */ | 20 | /* don't confuse Linux */ |
20 | t->rt.time_slice = 1; | 21 | t->rt.time_slice = 1; |
diff --git a/litmus/sched_task_trace.c b/litmus/sched_task_trace.c index 4ada33c6979b..73ce4df517ef 100644 --- a/litmus/sched_task_trace.c +++ b/litmus/sched_task_trace.c | |||
@@ -231,10 +231,11 @@ feather_callback void do_sched_trace_task_exit(unsigned long id, | |||
231 | { | 231 | { |
232 | struct task_struct *t = (struct task_struct*) _task; | 232 | struct task_struct *t = (struct task_struct*) _task; |
233 | const lt_t max_exec_time = tsk_rt(t)->max_exec_time; | 233 | const lt_t max_exec_time = tsk_rt(t)->max_exec_time; |
234 | const lt_t avg_exec_time = tsk_rt(t)->tot_exec_time / (get_rt_job(t) - 1); | ||
234 | 235 | ||
235 | struct st_event_record *rec = get_record(ST_TASK_EXIT, t); | 236 | struct st_event_record *rec = get_record(ST_TASK_EXIT, t); |
236 | if (rec) { | 237 | if (rec) { |
237 | rec->data.task_exit.when = now(); | 238 | rec->data.task_exit.avg_exec_time = avg_exec_time; |
238 | rec->data.task_exit.max_exec_time = max_exec_time; | 239 | rec->data.task_exit.max_exec_time = max_exec_time; |
239 | put_record(rec); | 240 | put_record(rec); |
240 | } | 241 | } |