YJIT на проде: заме...
 
Уведомления
Очистить всё

YJIT на проде: замеры до и после на Ruby 3.2

6 Сообщения
5 Пользователи
3 Реакции
418 Просмотры
TimurK62
Сообщения: 31
Автор темы
Читает чужие PR бэкенд-разработчик
Присоединился: 3 года назад
[#22]

Обещал цифры, приношу. Монолит на Rails 7.0, Ruby 3.2.2, Puma, 4 воркера по 5 потоков. Включили YJIT переменной окружения на половине серверов на неделю, трафик делится поровну. Проверка, что включилось:

$ RUBY_YJIT_ENABLE=1 ruby -v
ruby 3.2.2 (2023-03-30 revision e51014f9c0) +YJIT [x86_64-linux]

Время ответа приложения без учёта базы и внешних вызовов, считал по логам:

             без YJIT   с YJIT
p50          62 мс      49 мс
p95          310 мс     251 мс
CPU          58%        47%
RSS воркера  610 МБ     680 МБ

То есть около минус 20% по времени и плюс 70 МБ на воркер. Для нас это бесплатно, оставляем везде.


5 ответов
artem_67
Сообщения: 18
Пишет тесты разработчик на Go
Присоединился: 4 года назад

Двадцать процентов, и все радуются. На Go это отвечало бы за единицы миллисекунд. Ладно, бесплатные 20% лучше, чем никаких


Ответ
1 ответ
TimurK62
Присоединился: 3 года назад

Читает чужие PR бэкенд-разработчик
Сообщения: 31

Из 49 мс медианы большая часть рендер и Active Record. Переписывать на Go никто не будет, а YJIT включился одной переменной.


Ответ
armen_pet
Сообщения: 30
Собрал свой gem DevOps-инженер
Присоединился: 4 года назад

По памяти совпадает с тем, что я видел: плюс 10-15% на процесс. Если сервера впритык по RAM, первые дни следите за OOM. И проверьте, что Ruby в образе собран с YJIT: для сборки нужен rustc, без него переменная просто молча ничего не делает. ruby -v с плюсом, как выше, это и показывает.


Ответ
Егор64
Сообщения: 30
Читает чужие PR тимлид
Присоединился: 3 года назад

Покажу команде. Жду, когда это включат по умолчанию в самом Rails


Ответ
yarik_1966
Сообщения: 3
Пишет в irb разработчик
Присоединился: 3 года назад

а воркеры Sidekiq мерили? если джобы больше считают в Ruby, чем ждут базу, выигрыш там бывает даже больше, чем на вебе


Ответ