そうそう、Ruby 3.3でYJITのいい噂を聞いたのでおもむろに、
$ heroku run bash
~ $ ruby --version
ruby 3.3.0rc1 (2023-12-11 master a49643340e) [x86_64-linux]
~ $ ruby -h | grep yjit
--jit enable JIT for the platform, same as --yjit
--yjit enable in-process JIT compiler
$ heroku config:set RUBYOPT=--yjit
リスタートの時にいくつか503を返しちゃったけどそのあとは動いてくれてる。次はメモリを眺めないとね。
あまり顕著な変化は見られないなあと思ったけどyjitは有効になってるみたい。これはSidekiqからのログかな?
Dec 20 01:45:23 zundan-mastodon app/web.1 pid=2349 tid=3x5 INFO: Running in ruby 3.3.0rc1 (2023-12-11 master a49643340e) +YJIT [x86_64-linux]
Yjitを有効にした(中央の縦線)dynoのメモリ使用量(上のパネルの青)は少しずつ増えている。R15になりませんように(どうしてだかスワップもRSSとして計上されている)。応答時間(上から95%、90%、見えないけど中央値)にはそれほど変化はない。
Scout APMで眺めるRailsのそれぞれの部分にかかった時間の平均はyjitを有効にして(3:45pm)から若干減ったようにもみえる。
メモリ使用量(左、青)はじわじわ増えているけれど再起動されるまでには至ってない。がんばえ!Yjitの有効化(右、中央付近)の前後でコードの平均時間はさほど変化していないように見える。
Yjitを有効にして16時間(05:45 UTCから)ほど。使用メモリ量がぐいんぐいん増える頻度が高くなってしまったように見える。やっぱりメモリがボトルネックになっている環境でJITを利用するのは厳しいかもしれない。今回の実験はここまでにしておこうかな。