[PATCH] 2.5.72 O(1) interactivity bugfix

Con Kolivas (kernel@kolivas.org)
Thu, 19 Jun 2003 00:43:00 +1000


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi Ingo, all

While messing with the interactivity code I found what appears to be an
uninitialised variable (p->sleep_avg), which is responsible for all the
boost/penalty in the scheduler. Initialising this variable to 0 seems to have
made absolutely massive improvements to system responsiveness under load
and completely removed audio skips up to doing a make -j64 on my uniprocessor
P4 (beyond which swap starts being used), without changing the scheduler
timeslices. This seems to help all 2.4 O(1) based kernels as well. Attached
is a patch against 2.5.72 but I'm not sure about the best place to initialise
it.

diff -Naurp linux-2.5.72/kernel/fork.c linux-2.5.72-test/kernel/fork.c
- --- linux-2.5.72/kernel/fork.c 2003-06-18 22:47:25.000000000 +1000
+++ linux-2.5.72-test/kernel/fork.c 2003-06-19 00:30:26.000000000 +1000
@@ -864,6 +864,7 @@ struct task_struct *copy_process(unsigne
p->lock_depth = -1; /* -1 = no lock */
p->start_time = get_jiffies_64();
p->security = NULL;
+ p->sleep_avg = 0;

retval = -ENOMEM;
if ((retval = security_task_alloc(p)))
diff -Naurp linux-2.5.72/kernel/sched.c linux-2.5.72-test/kernel/sched.c
- --- linux-2.5.72/kernel/sched.c 2003-06-18 22:47:25.000000000 +1000
+++ linux-2.5.72-test/kernel/sched.c 2003-06-19 00:28:19.000000000 +1000
@@ -1755,6 +1755,7 @@ static int setscheduler(pid_t pid, int p
if (array)
deactivate_task(p, task_rq(p));
retval = 0;
+ p->sleep_avg = 0;
p->policy = policy;
p->rt_priority = lp.sched_priority;
if (policy != SCHED_NORMAL)

I hope this is correct.

Regards,
Con
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (GNU/Linux)

iD8DBQE+8Hp0F6dfvkL3i1gRAr/fAKCYbJ/yQhshqV7G43f+mQP4rZoKWgCfdD69
QuqYH58q6PdbD3qGFvjUKSs=
=huFo
-----END PGP SIGNATURE-----

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/