On Monday, 27 October 2014 at 21:43:47 UTC, Sean Kelly wrote:
On Monday, 27 October 2014 at 20:54:38 UTC, Brad Anderson wrote:

Just out of curiosity, what's the goal of MultiScheduler? Is it intended to be an M:N scheduler?

Yep. Every logical thread is a Fiber executed in a round-robin manner by a pool of kernel threads. Pooled threads are spun up on demand (to a set upper limit) and terminate when there are no fibers waiting to execute. It should make for a good "millions of threads" baseline scheduler.

Again, just out of curiosity, have you ever looked at Windows user-mode scheduling or Google's user-level threads[1][2] (under 200ns context-switch times)? I first heard of them from a post on the Rust forum[3] which suggested M:N may be a dead end. I believe Rust decided to try to make sure either 1:1 or M:N could be used but I don't actively follow Rust's development so I may be mistaken.

M:N is certainly a step up from our current situation in any case.

1. Talk: https://www.youtube.com/watch?v=KXuZi9aeGTw
2. Slides: http://www.linuxplumbersconf.org/2013/ocw//system/presentations/1653/original/LPC%20-%20User%20Threading.pdf 3. https://mail.mozilla.org/pipermail/rust-dev/2013-November/006550.html

Reply via email to