[Openstack] eventlet weirdness
Jay Pipes
jaypipes at gmail.com
Fri Mar 2 20:56:33 UTC 2012
On 03/02/2012 01:35 PM, Joshua Harlow wrote:
> Does anyone else feel that the following seems really “dirty”, or is it
> just me.
>
> “adding a few sleep(0) calls in various places in the
> Nova codebase (as was recently added in the _sync_power_states()
> periodic task) is an easy and simple win with pretty much no ill
> side-effects. :)”
>
> Dirty in that it feels like there is something wrong from a design point
> of view.
> Sprinkling “sleep(0)” seems like its a band-aid on a larger problem imho.
> But that’s just my gut feeling.
It's not really all that dirty, IMHO. You just have to think of
greenlet.sleep(0) as manually yielding control back to eventlet...
Like Phil said, in the absence of a non-userspace threading model and
thread scheduler, there's not a whole lot else one can do other than be
mindful of what functions/methods may run for long periods of time
and/or block I/O and call sleep(0) in those scenarios where it makes
sense to yield a timeslice back to other processes.
While it's true that eventlet (and to an extent Twisted) mask some of
the complexities involved in non-blocking I/O in a threaded(-like)
application programming model, I don't think there will be an
eventlet-that-knows-what-methods-should-yield-and-which-should-be-prioritized
library any time soon.
-jay
More information about the Openstack
mailing list