diff options
author | Jonathan Herman <hermanjl@cs.unc.edu> | 2012-05-09 17:11:56 -0400 |
---|---|---|
committer | Bryan Ward <bcw@cs.unc.edu> | 2013-04-16 14:37:12 -0400 |
commit | 6fd05d4b6c92bb3207fbd30423adf93d5b9b1bdc (patch) | |
tree | 415f822a477224fc36a6ba618f696be672ae5866 /litmus | |
parent | 080c188bbdb433e6cf7139dd6486f8578ad46029 (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 13a4ed4c9e93..8f56131b9591 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 b06764e8b330..d9cf46ec0550 100644 --- a/litmus/sched_task_trace.c +++ b/litmus/sched_task_trace.c | |||
@@ -234,10 +234,11 @@ feather_callback void do_sched_trace_task_exit(unsigned long id, | |||
234 | { | 234 | { |
235 | struct task_struct *t = (struct task_struct*) _task; | 235 | struct task_struct *t = (struct task_struct*) _task; |
236 | const lt_t max_exec_time = tsk_rt(t)->max_exec_time; | 236 | const lt_t max_exec_time = tsk_rt(t)->max_exec_time; |
237 | const lt_t avg_exec_time = tsk_rt(t)->tot_exec_time / (get_rt_job(t) - 1); | ||
237 | 238 | ||
238 | struct st_event_record *rec = get_record(ST_TASK_EXIT, t); | 239 | struct st_event_record *rec = get_record(ST_TASK_EXIT, t); |
239 | if (rec) { | 240 | if (rec) { |
240 | rec->data.task_exit.when = now(); | 241 | rec->data.task_exit.avg_exec_time = avg_exec_time; |
241 | rec->data.task_exit.max_exec_time = max_exec_time; | 242 | rec->data.task_exit.max_exec_time = max_exec_time; |
242 | put_record(rec); | 243 | put_record(rec); |
243 | } | 244 | } |