[Python-Dev] Improved thread switching

Adam Olsen rhamph at gmail.com
Wed Mar 19 17:24:21 CET 2008


On Wed, Mar 19, 2008 at 10:09 AM, Stefan Ring <s.r at visotech.at> wrote:
> Adam Olsen <rhamph <at> gmail.com> writes:
>
>  > Can you try with a call to sched_yield(), rather than nanosleep()?  It
>  > should have the same benefit but without as much performance hit.
>  >
>  > If it works, but is still too much hit, try tuning the checkinterval
>  > to see if you can find an acceptable throughput/responsiveness
>  > balance.
>  >
>
>  I tried that, and it had no effect whatsoever. I suppose it would make an effect
>  on a single CPU or an otherwise heavily loaded SMP system but that's not the
>  secnario we care about.

So you've got a lightly loaded SMP system?  Multiple threads all
blocked on the GIL, multiple CPUs to run them, but only one CPU is
active?  I that case I can imagine how sched_yield() might finish
before the other CPUs wake up a thread.

A FIFO scheduler would be the right thing here, but it's only a short
term solution.  Care for a long term solution? ;)

http://code.google.com/p/python-safethread/

-- 
Adam Olsen, aka Rhamphoryncus


More information about the Python-Dev mailing list