M:N scheduling and how the (Ruby) global vm lock impacts app performance

A while back I created the gvl-tracing gem as an experiment to help understand what was going on inside Ruby when multiple threads are in use. But Ruby is not standing still! Ruby 3.3 saw the introduction of M:N scheduling (off by default) which is a feature I ve been quite looking forward to. What is M:N scheduling, you ask? It s a new execution strategy for Ruby threads that is similar/borrows…