Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 12 Dec 1999 16:38:04 -0500
From:      "Daniel M. Eischen" <eischen@vigrid.com>
To:        Jason Evans <jasone@canonware.com>
Cc:        Arun Sharma <adsharma@sharmas.dhs.org>, arch@freebsd.org
Subject:   Re: Recent face to face threads talks.
Message-ID:  <385415BC.CA3DDDC4@vigrid.com>
References:  <Pine.BSF.4.10.9912112354520.26823-100000@current1.whistle.com> <38539C2B.9632089A@vigrid.com> <19991212095553.A7995@sharmas.dhs.org> <3853F3C0.EE96FB16@vigrid.com> <19991212124841.B350@sturm.canonware.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Jason Evans wrote:
> 
> On Sun, Dec 12, 1999 at 02:13:04PM -0500, Daniel M. Eischen wrote:
> > Arun Sharma wrote:
> > > Other concerns that were expressed - crossing protection boundaries too
> > > often to pass messages about blocking and rescheduling. Matt Dillon
> > > responded that these messages could be batched and made more efficient.
> >
> > I agree.  It seemed like the SA paper went to extremes in notifying
> > the UTS of unblocked threads.  I think we can do this at more opportune
> > times, like when a Q is resumed or on a user->kernel crossing.  I don't
> > know that we want to be interrupting a Q while it is running a thread
> > just to notify the UTS that another thread has unblocked in the kernel.
> 
> One aspect of the SA paper that we did not strictly adhere to in our design
> is the idea that activations always upcall into the UTS.  In particular, we
> felt that it would work to restore a preempted activation rather than
> creating a notification and a new activation.  After re-reading the SA
> paper (yet again), I'm not sure this saves us much performance-wise, and it
> probably reduces flexibility.

It is OK to resume a preempted activation only if you have one Q.
The thing that makes SA work is that the UTS is informed about
preemptions so threads can be resumed long enough to leave critical
sections.  Otherwise, with multiple Q's a preemption could make them
all spin for their entire quantum until the preempted Q was finally
resumed.  And if you allow Q's to have their own priority, a low-priority
Q that was preempted might hold up other Q's from running indefinitely.

You _need_ preemption notification or else you have to use kernel level
locks.  I feel very strongly that we need preemption notification.  Once
you have the ability to make upcalls, it's no more difficult than any
other upcall event.

> 
> Another aspect of the SA paper that we did not adhere to is notification of
> preemption.  I'm not sure this is a good simplification.  Without such
> notifications, it is not possible to know what is or isn't running on other
> processors, which could make certain scheduling decisions very difficult.
> Then again, I don't like the idea of preempting an activation so that a
> notification of preemption on another processor can be delivered.

I agree.  Wait until entering the kernel, or upon resuming from another
preemption.

Dan Eischen
eischen@vigrid.com




To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-arch" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?385415BC.CA3DDDC4>