Robin Morisset did his PhD on the interaction between compiler optimizations and the C++ memory model. This included some work integrating lock-free datastructures into a scheduler for some limited form of green threads, and proving it correct in the C++ memory model. Afterwards he worked for 4 years at Apple in the JavaScriptCore team, which is responsible for the JITs at the heart of Safari. Since 2022 he’s been working at Meta on the Erlang “Compiler, Types and Tooling” team.
The BEAM is famous for supporting many lightweight processes. But the scheduler responsible for deciding which of these processes should execute on which core at which time was designed at a time when most servers only had a few cores, and can suffer from severe lock contention issues when used on many-core machines (100+ cores). In this talk I’ll explain the main ideas behind how the BEAM’s scheduler works, how to discover and investigate lock-contention issues, and then explain some recent changes that mitigated these issues for the BEAM’s scheduler.
Key Takeaways:
Target Audience: