[RFC PATCH 03/11] sched: FAIR_SLEEPERS feature

Previous thread: [RFC PATCH 11/11] sched: fair sleepers for timer and interactive by Mathieu Desnoyers on Thursday, August 26, 2010 - 11:09 am. (1 message)

Next thread: [RFC PATCH 06/11] sched: dynamic min_vruntime by Mathieu Desnoyers on Thursday, August 26, 2010 - 11:09 am. (1 message)
From: Mathieu Desnoyers
Date: Thursday, August 26, 2010 - 11:09 am

Add the fair sleeper feature which disables sleeper extra vruntime boost on
wakeup. This is makes the DYN_MIN_VRUNTIME feature behave better by keeping the
min_vruntime value somewhere between MIN_vruntime and max_vruntime (see
/proc/sched_debug output with CONFIG_SCHED_DEBUG=y).

Turning on this knob is typically bad for interactivity. This is why a later
patch introduces the "FAIR_SLEEPERS_INTERACTIVE" feature, which provides this
combination of features:

NO_FAIR_SLEEPERS
FAIR_SLEEPERS_INTERACTIVE

So that fair sleeper fairness is only given to interactive wakeup chains.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
---
 kernel/sched_fair.c     |    2 +-
 kernel/sched_features.h |    1 +
 2 files changed, 2 insertions(+), 1 deletion(-)

Index: linux-2.6-lttng.git/kernel/sched_fair.c
===================================================================
--- linux-2.6-lttng.git.orig/kernel/sched_fair.c
+++ linux-2.6-lttng.git/kernel/sched_fair.c
@@ -735,7 +735,7 @@ place_entity(struct cfs_rq *cfs_rq, stru
 		vruntime += sched_vslice(cfs_rq, se);
 
 	/* sleeps up to a single latency don't count. */
-	if (!initial) {
+	if (sched_feat(FAIR_SLEEPERS) && !initial) {
 		unsigned long thresh = sysctl_sched_latency;
 
 		/*
Index: linux-2.6-lttng.git/kernel/sched_features.h
===================================================================
--- linux-2.6-lttng.git.orig/kernel/sched_features.h
+++ linux-2.6-lttng.git/kernel/sched_features.h
@@ -3,6 +3,7 @@
  * them to run sooner, but does not allow tons of sleepers to
  * rip the spread apart.
  */
+SCHED_FEAT(FAIR_SLEEPERS, 1)
 SCHED_FEAT(GENTLE_FAIR_SLEEPERS, 1)
 
 /*

--

Previous thread: [RFC PATCH 11/11] sched: fair sleepers for timer and interactive by Mathieu Desnoyers on Thursday, August 26, 2010 - 11:09 am. (1 message)

Next thread: [RFC PATCH 06/11] sched: dynamic min_vruntime by Mathieu Desnoyers on Thursday, August 26, 2010 - 11:09 am. (1 message)