Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 19 Oct 2004 22:00:38 -0400
From:      Stephan Uphoff <ups@tree.com>
To:        Julian Elischer <julian@elischer.org>
Cc:        FreeBSD Current <freebsd-current@freebsd.org>
Subject:   Re: wakeup/sleep handoff.
Message-ID:  <1098237638.15834.105.camel@palm.tree.com>
In-Reply-To: <41759681.1060700@elischer.org>
References:  <41759681.1060700@elischer.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, 2004-10-19 at 18:34, Julian Elischer wrote:
> Is there a need to be able to somehow implement a 'wakeup_one()' that
> as part of its semantic is that the woken thread will run immediatly, 
> (as in preemprion),
> and the old thread will sleep? With preemption, the old thread is left 
> in the run queue,
> and after the other thread has completed, it will
> run again and probably go away and sleep for some reason.. (or at least 
> go do some work that isn't
> necessarily required..)
> 
> Something like handover(wakeupchan, sleepchan, msleep_args...).
>  sort of an atomic wakeup/msleep.
> 
> This would be used in places where work used to be done by the same 
> thread, but is now done
> by a server thread..
> 
> An example would be kicking off a geom thread, when in the past we would 
> have gone all
> the way down to the hardware ourself. we want to get as close to acting 
> like we are still
> going all the way done as we can (performance wise). We may get some 
> efficiency by
> letting the sleep system, and scheduler know what we are trying to do. 
> Possibly with some
> priority inherritance implications.. (if we have a high priority, we 
> probably want to ensure that the
> worker thread is run with at least that priority.)

Why not just give the geom thread a high priority?
This, full preemption and changing a few functions to guaranty that the
highest priority thread will always run should do what you want.
( And maybe always raising the priority of threads working in the
kernel)
Actually this is relatively high on my to do list and I should have some
patches to try out in a week or two.

	Stephan



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