What does systems mean here? There is a dirty trick with a NOP and self rewriting code that's quite cheap when not triggered. I think java does it that way.
Re:Making the Tokio scheduler 10x faster
by sansnomme on Monday October 14, 2019 @05:24PM
(#21253062)
Elaborate?
So you put in a NOP before each backward jump. To preempt you overwrite it with a jump to a handler that saves the state of the thread.
Re:Making the Tokio scheduler 10x faster
by jedisct1 on Monday October 14, 2019 @06:51PM
(#21253708)
How multitasking used to work on Atari :)
But this requires code pages to be writable. Which, from a security perspective is awful.
This presumes writable code segments, which many OSes shun.
Re:Making the Tokio scheduler 10x faster
by hyperman1 on Tuesday October 15, 2019 @07:09AM
(#21257337)
It's java. Dynamic code generated by a jit.
Which NOP do you overwrite? Do you have to do this for all backward-jump-NOPs in all loaded executable code, or do you have to determine, which loop the thread in question is executing right now?
Re:Making the Tokio scheduler 10x faster
by heavenlyblue on Monday October 14, 2019 @07:17PM
(#21253914)
How does that resolve syscall question?
How do you preempt syscalls or FFI calls? (Go will almost certainly also have this issue with cgo modules)
I would be very surprised if preemptible Futures are something Tokio can or would implement.