coroutines once more...
Attila Szegedi
szegedia at gmail.com
Wed Dec 2 14:41:00 PST 2009
As coroutines are often employed in situations where massive parallelism is desired, I believe that the approach that allows millions of them is the better choice, if a single choice has to be made.
That said, if there is a meaningful way to have the programmer choose between the two models (or, in a really advanced solution, have the HotSpot choose for you), and it's not a hassle to maintain both, then it's probably the best. As you said, it's a tradeoff, and it's certainly better to allow the developer to make the tradeoff choices for themselves.
Attila.
On 2009.12.01., at 17:11, Lukas Stadler wrote:
> Hi everybody!
>
> I would be very interested to hear what the expectations for a coroutine
> implementations for Java are. I am asking because I am facing some
> initial design decisions on my way.
>
> There is a quite simple tradeoff between memory/address space usage and
> execution speed:
> * Using "traditional" implementations context switches are very cheap
> (constant time), but at least 12-16 kb of memory and 16-32 kb of address
> space is used per coroutine. This can exhaust 32-bit address space with
> ~50000 coroutines. And in order to do something useful we might need
> larger stack sizes, which lowers this number even further. A coroutine
> might need a larger stack size even though it occupies only a fraction
> of it while it is suspended. Creating and removing coroutines is expensive.
> * A more space-preserving implementation only keeps the parts of the
> coroutine in memory that it actually uses. It will be able to handle
> millions of coroutines, but this comes at the cost of a more complex
> context switch. Creating and removing coroutines is very cheap this way.
>
> For small coroutine it might be prohibitively expensive to allocate a
> real stack, but other applications might benefit from the fast context
> switch. Maybe I should aim for a hybrid solution?
> Any thoughts?
>
> regards,
> Lukas
> _______________________________________________
> mlvm-dev mailing list
> mlvm-dev at openjdk.java.net
> http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev
More information about the mlvm-dev
mailing list