The Global VM Lock (GVL), also known as Global Interpreter Lock (GIL), is an implementation detail of the CRuby VM. At a high-level, it prevents Ruby code across multiple threads from running in parallel (while still allowing concurrency!).
The GVL is an extremely important implementation detail, as it can have a big impact on the performance and responsiveness of any Ruby application that uses more than a single thread to do its work.
In this talk, I explore what the GVL is, why it is no longer called global VM lock, its impact on Ruby applications and how we can see it in action by using the GVL instrumentation API through the gvl-tracing
and gvltools
gems.