From: Mike Galbraith Date: Tue, 22 Nov 2011 14:21:26 +0000 (+0100) Subject: [PORT FROM R4]sched: Set skip_clock_update in yield_task_fair() X-Git-Tag: 2.1b_release~563 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=fbee9e77354b2c447abf938d5578447071423472;p=platform%2Fkernel%2Fkernel-mfld-blackbay.git [PORT FROM R4]sched: Set skip_clock_update in yield_task_fair() BZ: 42195 (backport of upstream commit 916671c08, merged in v3.3-rc1) This is another case where we are on our way to schedule(), so can save a useless clock update and resulting microscopic vruntime update. Signed-off-by: Mike Galbraith Signed-off-by: Peter Zijlstra Link: http://lkml.kernel.org/r/1321971686.6855.18.camel@marge.simson.net Signed-off-by: Ingo Molnar Change-Id: I55962c20a65857f52566c1970cb02e27f82845a8 Orig-Change-Id: I9e0b31ea4008cb0ed84b1dd3739c401856fdac4d Signed-off-by: German Monroy Reviewed-on: http://android.intel.com:8080/54410 Reviewed-by: Yang, Fei Tested-by: Ng, Cheon-woei Reviewed-by: buildbot Tested-by: buildbot --- diff --git a/kernel/sched.c b/kernel/sched.c index d35e6ca..6422d22 100644 --- a/kernel/sched.c +++ b/kernel/sched.c @@ -5663,6 +5663,13 @@ again: */ if (preempt && rq != p_rq) resched_task(p_rq->curr); + } else { + /* + * We might have set it in task_yield_fair(), but are + * not going to schedule(), so don't want to skip + * the next update. + */ + rq->skip_clock_update = 0; } out: diff --git a/kernel/sched_fair.c b/kernel/sched_fair.c index 15eca5d..e435b13 100644 --- a/kernel/sched_fair.c +++ b/kernel/sched_fair.c @@ -2014,6 +2014,12 @@ static void yield_task_fair(struct rq *rq) * Update run-time statistics of the 'current'. */ update_curr(cfs_rq); + /* + * Tell update_rq_clock() that we've just updated, + * so we don't do microscopic update in schedule() + * and double the fastpath cost. + */ + rq->skip_clock_update = 1; } set_skip_buddy(se);