This really is a great talk. I spent most of the 90s working with task schedulers, and have recently been playing with Go. I'd never seen any explanation of how Go does scheduling, but this talk makes things crystal clear, and maps nicely onto my experience. Kavya clearly knows her stuff, and tries to keep things interesting by changing intonation and using a little stagecraft, rather than letting viewers drift off to sleep. Nice work!
Not sure about you guys, But I'm a beginner and had to rewatch this presentation few times to understand it to the depth. Honestly the content is awesome.
I've been stuck looking to improve an M:N scheduler for my OS/language... found this video and it answers a TON of design and performance questions I had. (Work stealing run queues were the keyword I was looking for) Excellent talk, thanks a bunch!
Thanks for such an informative content ! Worth saving hours of googling 😀 Since we can create new threads for the goroutines waiting in the local runQ for threads which are blocked on a long running goroutine, as long as the number of goroutine running threads is
It will not "wake up". It notifies the monitor thread when it's runnable(waiting in the parking). And when the go routine running thread count is less than core number (this can happen if Tmain or T2 has a syscall), the monitor thread will take it from parking and allocate it it's run queue.
@@philipedekobi297 @tamjidahmed9872 But lets say if the g1 inside T1 is not yet finished, where would it be placed. T1 does not have any associated runqueue.
This really is a great talk. I spent most of the 90s working with task schedulers, and have recently been playing with Go. I'd never seen any explanation of how Go does scheduling, but this talk makes things crystal clear, and maps nicely onto my experience. Kavya clearly knows her stuff, and tries to keep things interesting by changing intonation and using a little stagecraft, rather than letting viewers drift off to sleep. Nice work!
Absolutely amazing presentation. So organized... Thanks kavya for such a great content
Great talk and explanation, I would definitely watch this again to get a better grasp, thanks Kavya for this awesome talk.
great presenter. i love her older go channels talk.
Not sure about you guys, But I'm a beginner and had to rewatch this presentation few times to understand it to the depth. Honestly the content is awesome.
Awesome presentation. Thank you!
I've been stuck looking to improve an M:N scheduler for my OS/language... found this video and it answers a TON of design and performance questions I had. (Work stealing run queues were the keyword I was looking for) Excellent talk, thanks a bunch!
Amazing presentation! I was linked to this from Gophers Slack. I'm grateful for the guy who did that!
can't upvote this enough!
this is so awesome and easy to understand. Thank you for sharing!
Amazing and well organized presentation! 👍
Wow! Clean Presentation and Nicely explained. Thanks Kavya
Awesome. Very good explained.
Great talk! Very informative
Thank you a ton. Awesome presentation.
Excellent content and presentation, thank you.
Thanks for such an informative content ! Worth saving hours of googling 😀
Since we can create new threads for the goroutines waiting in the local runQ for threads which are blocked on a long running goroutine, as long as the number of goroutine running threads is
25:25 nice summary, better watch this few times more
nice presentation!personally i love her voice
Thanks, Kavya!
Awesome talk
Thank you.
9:10 Welcome to Ruby.
just the best
Awesome!!!!
Great presentation!
Great presentation
On 24:22, what if the T1 wake up? there will be 3 threads, which beyond the limitation of CPU cores?
It will not "wake up". It notifies the monitor thread when it's runnable(waiting in the parking). And when the go routine running thread count is less than core number (this can happen if Tmain or T2 has a syscall), the monitor thread will take it from parking and allocate it it's run queue.
@@dune499 T1 will not wake up? so how about the g1 inside it? how will it continue the goroutine execution?
@@riankrishandi once the syscall unblocks, T1 will get parked
@@philipedekobi297 @tamjidahmed9872
But lets say if the g1 inside T1 is not yet finished, where would it be placed. T1 does not have any associated runqueue.
slices at speakerdeck.com/kavya719/the-scheduler-saga
thanks kavya
thanks
What about performing work stealing first from cores located on the same die so as to minimize cache misses…
nice talk
very useful!
Stylic Presentation.
that is great!!!
Nice talk but i still don't know how can you have 200k go routines, with this structure.
If there are 10 cores, You can have 1000s go routines on each local distributed queue.
@@tarunpahuja3443 yea..I know. This comment is more than 4 years old.
Okay boss
@@user-ov5nd1fb7s
nothing further
cool -- solves (go) world hunger! :D
Damn, she is trying so hard to sound mean!
thanks kavya