Extended periods of "waking up thread %d on cap %d"
bgamari.foss at gmail.com
Tue Jan 29 16:18:52 CET 2013
Simon Marlow <marlowsd at gmail.com> writes:
> So I think we could adopt a similar policy for STM. The mutex is
> lockTSO()/unlockTSO(), which is already taken in STM.c:unpark_tso(). To
> indicate that a thread has already been sent a wakeup message, we could
> set tso->block_info.closure to a special value - normally it would be
> END_TSO_QUEUE for a thread blocked in STM. I've been peering at the
> code a bit, and I'm pretty sure this is safe and doesn't involve many
> changes to the RTS.
> Do you want to try this out and let me know if you get stuck?
Here is a first stab at this. I'm currently waiting for a testsuite
run to finish but the patch at very least doesn't seem to break
anything obvious. Moreover, the number of wake-ups sent in my benchmark
appears to be much more reasonable now. Let me know if there's anything
obviously wrong here.
More information about the Glasgow-haskell-users