MRI には、一度に 1 つのスレッドだけが Ruby コードを実行できるようにする Global VM Lock (GVL) があります。しかし、ブロッキング IO (Twitter などの外部 API への HTTP 呼び出しなど) を大量に実行している場合でも、Puma は IO 待機を並行して実行できるようにすることで、MRI のスループットを改善します。
残念ながら、MRI のスループットが向上するメカニズムは説明されていません。
システム IO を呼び出すときに MRI が GIL を解放することは知っていますが、それは Puma の代わりに MIR による改善です。
Puma がブロック IO の並列処理をどのように改善するのだろうか。
参考にしていただければ幸いです。