Re: [2.4.17/18pre] VM and swap - it's really unusable

Oliver Xymoron
2002-01-09T00:32:31Z

On Tue, 8 Jan 2002, Andrew Morton wrote:

> > What a preemptible kernel can do that a non-preemptible kernel can't is:
> > reschedule exactly as often as necessary, instead of having lots of extra
> > schedule points inserted all over the place, firing when *they* think the
> > time is right, which may well be earlier than necessary.
>
> Nope. `if (current->need_resched)' -> the time is right (beyond right,
> actually).

Have we ever considered making rescheduling work like get_user? That is,
make current->need_resched be a pointer, and if we need to reschedule,
make it an INVALID pointer that causes us to fault and call schedule in
its fault path?

Orthogonally, for rescheduling points with locks, we could build a version
of the spinlocks that know when they're blocking other processes and can
do a spin_yield(&lock) in places where they can safely give up a lock. On
single processor, spin_yield could translate to a scheduling point.

--
"Love the dolphins," she advised him. "Write by W.A.S.T.E.."