<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">
From: Con Kolivas &lt;kernel@kolivas.org&gt;

A heck of a lot fairer on disk only tasks; lets them earn sleep avg up to just 
interactive state so they stay on the active array.



 kernel/sched.c |   11 +++++++----
 1 files changed, 7 insertions(+), 4 deletions(-)

diff -puN kernel/sched.c~o13.1int kernel/sched.c
--- 25/kernel/sched.c~o13.1int	2003-08-04 17:17:10.000000000 -0700
+++ 25-akpm/kernel/sched.c	2003-08-04 17:17:10.000000000 -0700
@@ -584,13 +584,16 @@ repeat_lock_task:
 				goto repeat_lock_task;
 			}
 			if (old_state == TASK_UNINTERRUPTIBLE){
+				rq-&gt;nr_uninterruptible--;
 				/*
 				 * Tasks on involuntary sleep don't earn
-				 * sleep_avg
+				 * sleep_avg beyond just interactive state.
 				 */
-				rq-&gt;nr_uninterruptible--;
-				p-&gt;timestamp = sched_clock();
-				p-&gt;activated = -1;
+				if (NS_TO_JIFFIES(p-&gt;sleep_avg) &gt;=
+					JUST_INTERACTIVE_SLEEP(p)){
+						p-&gt;timestamp = sched_clock();
+						p-&gt;activated = -1;
+				}
 			}
 			if (sync)
 				__activate_task(p, rq);

_
</pre></body></html>