aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjoern Brandenburg <bbb@mpi-sws.org>2013-07-01 17:45:08 -0400
committerBjoern Brandenburg <bbb@mpi-sws.org>2013-08-07 03:46:58 -0400
commitb2ddb2157bb6d291c317df1de18ad85addf93d8f (patch)
treef0188a621d7e2ac2a143ffda35a4bada5328e143
parentfa1584073535113c252b8c62fab819159ef68e4d (diff)
Disable cut-to-CFS optimization in Linux scheduler
Global plugins require that the plugin be called even if there currently is no real-time task executing on the local core.
-rw-r--r--kernel/sched/core.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index e91eb050d2fb..90cc4b53cc5f 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -2939,12 +2939,19 @@ pick_next_task(struct rq *rq)
2939 /* 2939 /*
2940 * Optimization: we know that if all tasks are in 2940 * Optimization: we know that if all tasks are in
2941 * the fair class we can call that function directly: 2941 * the fair class we can call that function directly:
2942 */ 2942
2943 * NOT IN LITMUS^RT!
2944
2945 * This breaks many assumptions in the plugins.
2946 * Do not uncomment without thinking long and hard
2947 * about how this affects global plugins such as GSN-EDF.
2948
2943 if (likely(rq->nr_running == rq->cfs.h_nr_running)) { 2949 if (likely(rq->nr_running == rq->cfs.h_nr_running)) {
2944 p = fair_sched_class.pick_next_task(rq); 2950 p = fair_sched_class.pick_next_task(rq);
2945 if (likely(p)) 2951 if (likely(p))
2946 return p; 2952 return p;
2947 } 2953 }
2954 */
2948 2955
2949 for_each_class(class) { 2956 for_each_class(class) {
2950 p = class->pick_next_task(rq); 2957 p = class->pick_next_task(rq);