Ruby YJITでRailsのレイテンシが20%改善したnote
noteのAPIサーバーのRailsのYJITオプションをONにしたらめっちゃ速くなりました。
さっそくですが、
有効化する前後1週間における記事APIの平均レスポンスは以下の通りです。
off … 196ms
on … 158ms
約20%速度アップになります。
なお、p50(最も遅かったリクエストの50パーセントの平均レイテンシー)をとってますが、特別速く見える数字を切り取ったわけではなく、どこを切り取っても概ね10%~30%程度は速くなっています。Rubyの処理系だけ切り取ればもっと速いでしょう。
メモリ使用量は+2GBと激増していますが、まあそんなもんかと思います。
現在noteのRubyのバージョンはv3.2.2。v3.3以降でさらなる速度およびメモリが改善されているとのことなので楽しみです。
特に重要なポイントはこちらの速度改善がフラグをONにすればできるという点です。(Rails7.2以降ではデフォルトになるそうです。)
こうしたRubyの高速化は「Ruby3x3」をキャッチフレーズに進められてきましたが、単なるマイクロベンチマークではなくRailsのYJIT、しかもフラグをONにするだけで、広く一般に価値あるものとして機能するというのが素晴らしく、提供いただいたRubyコミュニティおよびShopifyチームには感謝の念が絶えません。
一昨年、三重で行われたRubyKaigi2022のキーノートでは価値を届けるということにフォーカスしていました。Rubyユーザーのnoteも社会に価値を提供する機能開発をしていきたいと思います。
ひとまず
Ruby YJIT がとてもイイぞ!
ということが伝えられればと思います。
今年2024年のRubyKaigiは那覇です。
noteでもブースを出すことになるかと思いますので、YJITの詳しい話など聞きたい場合はどうぞお立ち寄りください。