[prev in list] [next in list] [prev in thread] [next in thread]
List: linux-ia64
Subject: [Linux-ia64] O(1) scheduler for 2.4.18-ia64
From: Erich Focht <efocht () ess ! nec ! de>
Date: 2002-07-16 16:23:52
[Download RAW message or body]
Hi,
for those working with IA64 systems: at
http://home.arcor.de/efocht/sched/MQO1_ia64-ef7-2.4.18.patch.bz2
you can find a port of the O(1) scheduler. It is the "old" one, i.e.
not having SCHED_BATCH, etc. But it has some important changes compared
to my last port:
- Uses the "complex" macros which release the RQ lock before switching
context. This is a MUST on IA64, as there is a potential deadlock
when the context numbers are wrapped around.
- cpu_idle() is changed such that platforms which just return from
pm_idle() don't call schedule() in a tight loop. This was the reason
for massive cache line bouncings when some CPUs were idle as they
not only locked their RQs but also loaded nr_running (on the same cac=
he
line as the lock) for every other RQ. The position of nr_running insi=
de
the RQ structure is changed, such that it doesn't share the cacheline
with lock.
- load_balance() only steals at most one task. Before it could sometime=
s
steal half of the tasks of the most loaded CPU. This is OK on small
machines but on large ones the tasks were bounced around a while unti=
l
"settling" on a particular CPU. Maybe this is not yet optimal, but it
improves hackbench results.
The patch applies to 2.4.18 + 4th ia64 patch from David. It also can
be applied to the vanilla 2.4.18, (kernel/timer.c needs to be edited by
hand), but this port is not intended to be an alternative to Robert Love'=
s
backports... It is for IA64 and/or the node affine scheduler.
Best regards,
Erich
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic