diff options
| author | Srivatsa Vaddagiri <vatsa@codeaurora.org> | 2016-05-13 02:05:32 -0700 |
|---|---|---|
| committer | Pavankumar Kondeti <pkondeti@codeaurora.org> | 2016-12-16 16:50:51 +0530 |
| commit | f8c7c6ffdfb366efce72a4df93d124659a246b8c (patch) | |
| tree | c9a7d3cc5acdf1c70b68482aae03bc6bb38cc2b6 /kernel/sched/core.c | |
| parent | 3162449f7d245d45f007d4ea3224576ddf1bcc63 (diff) | |
sched: Track burst length for tasks
Track burst length for tasks as time they ran from wakeup to sleep.
This is used to predict average time a task may run when it wakes up
and thus avoid waking up idle cpu for "short-burst" tasks.
Change-Id: Ie71d3163630fb8aa0db8ee8383768f8748270cf9
Signed-off-by: Srivatsa Vaddagiri <vatsa@codeaurora.org>
Signed-off-by: Pavankumar Kondeti <pkondeti@codeaurora.org>
Diffstat (limited to 'kernel/sched/core.c')
| -rw-r--r-- | kernel/sched/core.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/kernel/sched/core.c b/kernel/sched/core.c index ee708909dc17..1a288e2de50d 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -1708,7 +1708,7 @@ int select_task_rq(struct task_struct *p, int cpu, int sd_flags, int wake_flags) return cpu; } -static void update_avg(u64 *avg, u64 sample) +void update_avg(u64 *avg, u64 sample) { s64 diff = sample - *avg; *avg += diff >> 3; @@ -3403,6 +3403,8 @@ static void __sched notrace __schedule(bool preempt) if (likely(prev != next)) { update_task_ravg(prev, rq, PUT_PREV_TASK, wallclock, 0); update_task_ravg(next, rq, PICK_NEXT_TASK, wallclock, 0); + if (!is_idle_task(prev) && !prev->on_rq) + update_avg_burst(prev); rq->nr_switches++; rq->curr = next; |
