diff options
author | Steven Rostedt <srostedt@redhat.com> | 2010-12-06 17:10:31 -0500 |
---|---|---|
committer | Steven Rostedt <rostedt@goodmis.org> | 2010-12-13 19:56:43 -0500 |
commit | e69c634190dc724ef2d845ace8d783031d3e492e (patch) | |
tree | 03c16d8f6f3ec24408adbe9042bc42546725141a | |
parent | 63f01241176d7cbc976385aec32f0a209b0bc36a (diff) | |
download | op-kernel-dev-e69c634190dc724ef2d845ace8d783031d3e492e.zip op-kernel-dev-e69c634190dc724ef2d845ace8d783031d3e492e.tar.gz |
sched: Remove unlikely() from ttwu_post_activation
The unlikely() used in ttwu_post_activation() tests if the rq->idle_stamp
is set. But since this is for a wakeup, and wakeups happen when tasks
block on IO, and blocking tasks on IO may put the system into idle,
this can actually be a common occurence.
Running the annotated branch profiler on an average desktop running
firefox, evolution, xchat and distcc, the report shows:
correct incorrect % Function File Line
------- --------- - -------- ---- ----
34884862 146110926 80 ttwu_post_activation sched.c 2309
80% of the time, this unlikely is incorrect. Best not to assume what the
result is, and just remove the branch annotation.
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
-rw-r--r-- | kernel/sched.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/kernel/sched.c b/kernel/sched.c index 269a045..6d24b2e 100644 --- a/kernel/sched.c +++ b/kernel/sched.c @@ -2458,7 +2458,7 @@ static inline void ttwu_post_activation(struct task_struct *p, struct rq *rq, if (p->sched_class->task_woken) p->sched_class->task_woken(rq, p); - if (unlikely(rq->idle_stamp)) { + if (rq->idle_stamp) { u64 delta = rq->clock - rq->idle_stamp; u64 max = 2*sysctl_sched_migration_cost; |