タグ

YJITに関するYassLabのブックマーク (20)

  • YJIT・pitchforkのreforkingを導入し、パフォーマンスが3割向上しました - Akatsuki Hackers Lab | 株式会社アカツキ(Akatsuki Inc.)

    はじめに こんにちは。アカツキゲームスの松下です。 弊社ではRailsを用いた大規模なゲームサーバを運用しており、お客様に良い体験を届けるべく、パフォーマンス改善が常に重要事項であり続けています。そのため、RubyにおけるJITコンパイラ・高速化技術であるYJITについても、登場時から注目していました。弊社でもこれまでに何度か導入を試みてきたものの、YJITを有効化すると負荷試験中に segmentation fault(SEGV)がごく稀かつランダムな箇所で発生するという現象に悩まされており、原因の特定すら難航する、歯痒い状態が続いている状況でした。 そのため、長らく番導入を見送らざるを得ない状況が続いていましたが、一念発起し試行錯誤を重ねた結果、YJITとpitchforkのreforkingを番環境に導入することに成功し、大きなパフォーマンス改善を得ることができました。 記事で

    YJIT・pitchforkのreforkingを導入し、パフォーマンスが3割向上しました - Akatsuki Hackers Lab | 株式会社アカツキ(Akatsuki Inc.)
    YassLab
    YassLab 2026/04/14
    “そこで、SimpleJsonに変更を加えることにしました。PRはこちらです Replace lambda with method to avoid YJIT crash by AZQ1994” https://github.com/aktsk/simple_json/pull/12
  • 効果絶大!YJITがRailsアプリにもたらす変化 #パフォーマンス #Ruby #Rails #YJIT - クラウドワークス エンジニアブログ

    はじめに crowdworks.jp のジャンヌチームで主にバックエンドの技術的負債の解消に取り組んでいる @kotarou1192 です。 crowdworks.jp を支える Rails アプリケーションで YJIT を有効化しました。 記事では、有効化の背景と、1週間の観察で得られたパフォーマンスの変化を報告します。 YJIT とは YJITRuby 3.1 で実験的に導入された JIT コンパイラです。 Ruby 3.2 で番利用可能な品質となり、Ruby 3.3 ではさらなるパフォーマンス改善が加えられています。 Lazy Basic Block Versioning (LBBV) という手法により、実行時にコードを Basic Block 単位で遅延的にネイティブコードへコンパイルすることで、インタプリタ実行と比較して高速化を実現します。 Ruby 3.3 における

    効果絶大!YJITがRailsアプリにもたらす変化 #パフォーマンス #Ruby #Rails #YJIT - クラウドワークス エンジニアブログ
    YassLab
    YassLab 2026/02/20
    "Shopify は Ruby 3.3 の YJIT により本番コードが15%高速化 / 今回の Puma における約12〜13%の改善はこれと概ね同程度であり、大規模 Rails アプリケーションにおける YJIT の効果として妥当 / 最大のボトルネックはやはり RDBMS の操作"
  • 5年振りのメジャーバージョンアップとなるRuby 4.0正式リリース、クラスの定義などを隔離するRuby Box、新JITコンパイラ「ZJIT」搭載など

    5年振りのメジャーバージョンアップとなるRuby 4.0正式リリース、クラスの定義などを隔離するRuby Box、新JITコンパイラ「ZJIT」搭載など Ruby開発チームは2025年12月25日、Ruby 4.0の正式リリースを発表しました。 Rubyは毎年12月25日に新バージョンをリリースすることが恒例となっており、2024年も予定通りに新バージョンが登場しました。しかも今回は2020年にRuby 3.0が登場して以来5年振りのメジャーバージョンアップとなりました。 Rubyはまつもとゆきひろ氏により1993年に開発が始められたプログラミング言語です。シンプルで生産性の高いプログラムを書くことができることなどを特長とし、Ruby on RailsRails)と呼ばれるWebアプリケーションを容易に構築できるフレームワークを備えていることで人気のプログラミング言語です。 Ruby 4

    5年振りのメジャーバージョンアップとなるRuby 4.0正式リリース、クラスの定義などを隔離するRuby Box、新JITコンパイラ「ZJIT」搭載など
    YassLab
    YassLab 2026/01/05
    “新JITコンパイラ「ZJIT」搭載 - YJITの開発チームが開発した、実験的なメソッドベースの新しいJITコンパイラ「ZJIT」が搭載されました。... ZJITはそのYJITコンパイラの後継として、さらなる性能向上を目指しています。”
  • Rubyの次バージョンは「Ruby 4.0」に。「Ruby 4.0 Preview2」がリリース

    Rubyはまつもとゆきひろ氏により1993年に開発が始められたプログラミング言語です。シンプルで生産性の高いプログラムを書くことができることなどを特長とし、Ruby on RailsRails)と呼ばれるWebアプリケーションを容易に構築できるフレームワークを備えていることで人気のプログラミング言語です。 1996年にRubyバージョン1.0、2013年にバージョン2.0となり、2020年には性能を大幅に向上させたRuby 3が登場しています。 参考:Ruby 3.0正式版リリース。「Ruby 2の3倍速」到達、型の記述、スレッドセーフな並列処理など新機能 現時点での最新バージョンは、昨年(2024年)12月にリリースされたRuby 3.4で、今年(2025年)4月にはRuby 3.5.0 Preview 1がリリースされていました。 その後、今月(2025年11月)に行われたRubyW

    Rubyの次バージョンは「Ruby 4.0」に。「Ruby 4.0 Preview2」がリリース
    YassLab
    YassLab 2025/11/26
    “シンプルで生産性の高いプログラムを書くことができることなどを特長とし、Ruby on Rails(Rails)と呼ばれるWebアプリケーションを容易に構築できるフレームワークを備えていることで人気のプログラミング言語です。”
  • SmartHR最大のRailsアプリケーションをRuby 3.4(+YJIT)にアップデートしました - SmartHR Tech Blog

    こんにちは、SmartHR プロダクトエンジニアの B6 です。 「SmartHR 最大の Rails アプリケーションで YJIT を有効化しました」の記事を投稿してから 5 ヶ月ほど経ちました。 その後、「基機能」と呼ばれる SmartHR 最大の Rails アプリケーションでは RubyRails のアップデートを行いました。 記事では、YJIT を主題に、RailsRuby アップデートと YJIT によるパフォーマンス変化について共有いたします。 アップデート後の環境 アップデート後の RubyRails のバージョンは以下の通りです。 Ruby 3.4 Rails 7.2 Rails アップデートによる YJIT 有効化方法の変更 Rails は、以前の記事執筆時点の 7.1 から、7.2 にアップデートしました。 Rails 7.2 では Ruby 3.3 以降を

    SmartHR最大のRailsアプリケーションをRuby 3.4(+YJIT)にアップデートしました - SmartHR Tech Blog
    YassLab
    YassLab 2025/08/21
    “アップートに際し、load_defaults を設定していなかったことが原因 / 意図せず YJIT が無効化されるという事態が発生 / Rails アップデート後、設定値を確認しながらload_defaultsのバージョンを順次上げていくのが理想”
  • ZJIT has been merged into Ruby

    Following Maxime’s presentation at RubyKaigi 2025, the Ruby developers meeting, and Matz-san’s approval, ZJIT has been merged into Ruby. Hurray! In this post, we will give a high-level overview of the project, which is very early in development. ZJIT is a new just-in-time (JIT) Ruby compiler built into the reference Ruby implementation, YARV, by the same compiler group that brought you YJIT. We (M

    ZJIT has been merged into Ruby
    YassLab
    YassLab 2025/05/16
    "ZJIT is a new just-in-time (JIT) Ruby compiler built into the reference Ruby implementation, YARV, by the same compiler group that brought you YJIT. We (Maxime Chevalier-Boisvert, Takashi Kokubun, Alan Wu, Max Bernstein, and Aiden Fox Ivey) have been working on ZJIT since the beginning of this yr"
  • 9年選手のTUNAG RailsアプリをRuby 3.4にアップデートした - stmn tech blog

    TUNAG with Ruby 3.4 昨年末12月25日にRubyの最新バージョン3.4がリリースされました。従業員体験プラットフォームTUNAG(ツナグ)を開発・運用している私たちのチームでは、この最新バージョンにいち早く追従。複数のRuby on Railsアプリケーションのバージョンを、すべて3.4.1にアップデートしました(2025年1月10日現在)。アップデート後1週間ほど問題なく運用できていますので、速報として記事化します。 移行前はRuby 3.3.6+YJIT、移行後はRuby 3.4.1+YJITとなります。 $ ruby -V ruby 3.4.1 (2024-12-25 revision 48d4efcb85) +YJIT +PRISM [x86_64-linux] 過去のTUNAGにおいてRuby/Railsのアップデート実績については以下の記事もご覧ください。

    9年選手のTUNAG RailsアプリをRuby 3.4にアップデートした - stmn tech blog
    YassLab
    YassLab 2025/01/24
    “最大2年間は後回しにすることも可能でしたが、2024年のコミュニティへのフィードバックという貢献を最大化するため、このタイミングでの実施に至りました”
  • Speeding up Ruby by rewriting C… in Ruby

    There is a recent language comparison repo which has been getting shared a lot. In it, CRuby was the third slowest option, only beating out R and Python. The repo author, @BenjDicken, created a fun visualization of each language’s performance. Here’s one of the visualizations, which shows Ruby as the third slowest language benchmarked: The code for this visualization is from https://benjdd.com/lan

    Speeding up Ruby by rewriting C… in Ruby
    YassLab
    YassLab 2024/12/08
    “With a layer like YJIT, it potentially opens up a future where more of the language becomes plain Ruby, and Ruby developer contribution is easier. Many languages have a smaller low level core, and the majority of the language is written in itself. Maybe that’s a future for CRuby, someday!”
  • tetoru は Ruby 3.3 + YJIT で本番運用しています - Classi開発者ブログ

    プロダクト部 tetoru 開発部の中田です。普段は giraffate という ID を使っていることが多いです。 ここでは、弊社が提供している小中学校向け保護者連絡配信サービス tetoru の利用している Ruby のバージョンを 3.2 から 3.3 にバージョンアップしたときの話を共有します。 概要 tetoru では、文章の執筆時点で Ruby 3.3.4 + YJITRails アプリケーションを動かしています。YJIT とは、Ruby が備えている Just-In-Time (JIT) コンパイラの機能で、これを有効化することで実行時に機械語が生成されアプリケーションの高速化につながります。YJIT に関する詳細についてはこちらの記事をご覧ください。 Ruby 3.2.2 + YJIT から Ruby 3.3.0 + YJIT にバージョンアップした時には多少レイ

    tetoru は Ruby 3.3 + YJIT で本番運用しています - Classi開発者ブログ
    YassLab
    YassLab 2024/09/03
    "Ruby 3.3 YJITのメモリ管理とRJIT等の記事が既に公開されており、メモリ使用率が上がった場合に取るべき手段をいくつか準備できていたのはとても心強かった / 改めてこのような情報を提供してくれるRubyコミュニティに感謝"
  • 『家族アルバム みてね』はRuby 3.3で動いています

    こんにちは、みてねプロダクト開発部 プラットフォームグループ SREチームの kohbis です。 『家族アルバム みてね』(以下、みてね)では、ほとんどのサーバーサイドをRuby on Railsアプリケーションで展開しています。 そしてタイトルの通りですが、2024年6月時点でみてねのアプリケーションのすべてにおいてRuby 3.3.3へのアップグレードが完了したので、その結果について紹介したいと思います。 Ruby 3.3アップグレードの結果以下はみてねの主なAPIを提供しているアプリケーションのグラフ(平均)です。 Ruby 3.3リリースのタイミングで大幅にレスポンスタイムが改善していることがわかります🙌

    『家族アルバム みてね』はRuby 3.3で動いています
    YassLab
    YassLab 2024/07/05
    “【RubyのDockerイメージ共通化】みてねでは複数のRuby on Railsアプリケーションを運用しています / 効率的にRubyアップグレードが適用できるように、共通のDockerイメージを作成して各アプリケーションから利用するかたち”
  • ruby/doc/yjit/yjit.md at master · ruby/ruby

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    ruby/doc/yjit/yjit.md at master · ruby/ruby
    YassLab
    YassLab 2024/05/29
    "YJIT is a lightweight, minimalistic Ruby JIT built inside CRuby. It lazily compiles code using a Basic Block Versioning (BBV) architecture. YJIT is currently supported for macOS, Linux and BSD on x86-64 and arm64/aarch64 CPUs. This project is open source and falls under the same license as CRuby."
  • YJIT Makes Rails 1.7x faster / RubyKaigi 2024

    RubyKaigi 2024 https://rubykaigi.org/2024/

    YJIT Makes Rails 1.7x faster / RubyKaigi 2024
    YassLab
    YassLab 2024/05/29
    “YJIT Makes Rails 1.7x faster / RubyKaigi 2024 https://rubykaigi.org/2024/
  • YJIT Makes Rails 1.7x Faster

    YassLab
    YassLab 2024/05/17
    “Why does YJIT make Ruby so much faster? In this talk, you’ll explore the latest YJIT optimizations that have a huge impact on your application’s performance. Once you understand what you're missing out on, you can't help but enable YJIT. Back ”
  • Ruby might be faster than you think - John Hawthorn

    I saw a project a couple weeks back which allows writing and running Crystal methods inline inside a Ruby file. It’s a neat project, and I don’t want to take away from it but something in the README example looked off to me. require 'crystalruby' require 'benchmark' module Fibonnaci crystalize [n: :int32] => :int32 def fib_cr(n) a = 0 b = 1 n.times { a, b = b, a + b } a end module_function def fib

    YassLab
    YassLab 2024/05/04
    “Now it’s Ruby that’s 5 times faster than Crystal!!! And 20x faster than our original version. Though most likely that’s some cost from the FFI, or something similar, though that does seem like a surprising amount of overhead. ”
  • ニコニコ漫画をRuby3.2.0に更新してYJIT有効化するとパフォーマンス改善された話 - BOOK☆WALKER inside

    はじめに こんにちは。ニコニコ漫画の開発をしているyotaとtukiyoです。 この記事はペアブロギングによって執筆しています。 記事ではニコニコ漫画で利用しているRubyのバージョンを3.2.0へ更新したこととYJITの有効化によるパフォーマンスの変化について紹介します。 ニコニコ漫画のインフラ構成についてにある通り、ニコニコ漫画は4つのプロダクトによって運用されています。 このうち記事の対象となるのは、Rubyを利用している「新バックエンド」と「課金サブシステム」になります。 今回、Rubyのバージョンが3.2.0になったことでYJITが実験段階ではなくなりました。*1 ニコニコ漫画のバックエンドシステム内では複雑な処理も多く、恩恵に与ることを期待して更新を行いました。 結果として大きなパフォーマンスの向上が見られました。 はじめに 更新に関する作業 更新前後のパフォーマンス比較

    ニコニコ漫画をRuby3.2.0に更新してYJIT有効化するとパフォーマンス改善された話 - BOOK☆WALKER inside
    YassLab
    YassLab 2024/05/02
    "11時頃に見られる急激なレスポンスタイムの伸びは、ピークタイムの突入負荷によるもので、これは定常的に発生しています。 特にピークタイム突入時のパフォーマンス改善は大きく、6割程度のレスポンスタイムの削減"
  • Breaking the Ruby Performance Barrier

    YassLab
    YassLab 2024/04/15
    "In order to break the Ruby performance barrier it will be necessary to reduce the dependency on C exts, and start writing more gems in pure Ruby code...I want to look at this problem more in depth and explore how YJIT can help enable writing pure-Ruby software that delivers high performance levels"
  • Ruby 3.3.0+YJIT本番運用カンパニーになりました - Timee Product Team Blog

    こんにちは。バックエンドエンジニアの須貝(@sugaishun)です。 今回はタイミーが番運用しているRailsアプリケーションに対してRuby3.3.0へのアップデートを行った(YJITは引き続き有効なまま)のでその結果をご紹介したいと思います。 昨年弊社のid:euglena1215が書いたエントリーのRuby3.3.0版です。 tech.timee.co.jp 前提 タイミーのWebアプリケーションとしての特性は基的には昨年と変わりありません。ですので、昨年の内容をそのまま引用させてもらいます。 タイミーを支えるバックエンドの Web API は多くのケースで Ruby の実行よりも DB がボトルネックの一般的な Rails アプリケーションです。JSON への serialize は active_model_serializers を利用しています。 今回の集計では API

    Ruby 3.3.0+YJIT本番運用カンパニーになりました - Timee Product Team Blog
    YassLab
    YassLab 2024/04/13
    "--yjit-exec-mem-sizeをデフォルトの64MiBから32MiBに減らしたところ、メモリ使用量はアップデート前より少し増えた程度の水準まで抑えることができました。なお、この変更によるパフォーマンスへの影響は見られませんでした"
  • スタディサプリ最大のRailsアプリケーションにYJIT+pitchforkを導入してメモリ使用量を劇的に削減するまで - スタディサプリ Product Team Blog

    こんにちは。SREのkyontanです。Rubyが大好きなのでRubyの話をします。ちなみにリクルートはRubyKaigi 2024へGold Sponsorとして協賛しています! *1。ぜひ沖縄でお会いしましょう。 これはあるアプリケーションのメモリ消費量を示すグラフなのですが、まさかgemを入れ替えるだけでこんなに嬉しい変化が見られるとは思っていませんでした。今日はそんなgemの話をします。 話は遡って2023年4月のある日、インターネットを眺めていたところ、ShopifyがpitchforkというOSSを公開したという情報が目に留まりました。 調べてみると、どうやら著名なRackサーバー実装の1つであるunicornの派生版であり、メモリ使用量の削減に特化しているらしいのです。 github.com これはスタディサプリ小中高のあのリソースドカいマイクロサービス第一位である api

    スタディサプリ最大のRailsアプリケーションにYJIT+pitchforkを導入してメモリ使用量を劇的に削減するまで - スタディサプリ Product Team Blog
    YassLab
    YassLab 2024/04/02
    "松本で行われたRubyKaigi 2023に参加した際にはAfter Partyでbyroot氏とも対面で会話し、多分そのワークロードだとうまく動くと思う、みたいな会話 / 先は長そうだ……と思いつつpitchforkにissueを立ててみると、なんと40分で解決"
  • Ruby 3.3でYJITを今すぐ有効にすべき理由 - k0kubun's blog

    Ruby 3.3がリリースされた。YJITには非常に多くの改善が含まれたリリースだったが、 NEWS解説記事やリリースパーティーでは 2点しか触れられなかったので、この記事ではRuby 3.3でYJITがどう改善されたかについて解説する。 YJITは既に実用段階 YJITRuby 3.1で導入されたが、Ruby 3.2の時点でexperimentalのマークが外れ、実用段階となった。 Ruby 3.2では、以下のような企業で性能改善が報告された。 DeNA: 40% 高速化 GMOペバボ: 18% 高速化 STORES: 6.5-7.5% 高速化 Timee: 10% 高速化 メドピア: 2.8% 高速化 BOOK☆WALKER: 20-30% 高速化 Discourse: 15.8-19.6% 高速化 Lobsters: 26% 高速化 CompanyCam: 20-40% 高速化 弊

    Ruby 3.3でYJITを今すぐ有効にすべき理由 - k0kubun's blog
    YassLab
    YassLab 2023/12/27
    "Ruby 3.2では以下のような企業で性能改善が報告された。DeNA: 40% / GMOペバボ: 18% / Timee: 10% / STORES: 6.5-7.5% / メドピア: 2.8% / Discourse: 15.8-19.6% / Lobsters: 26% / CompanyCam: 20-40% / Ruby 3.3.0は比較的安定したリリースになっているはず"
  • Ruby 3.3’s YJIT Runs Shopify’s Production Code 15% Faster

    Ruby 3.2 YJIT is Battle-Tested Shopify deploys YJIT on business-critical services in production, such as Storefront Renderer, the software that powers all online storefronts on Shopify’s platform, and Shopify’s Monolith. As of the Ruby 3.2 release, YJIT sped up our Storefront Renderer by 10% on average. Storefront Renderer is a complex application. Your more reasonable-sized app might get better/w

    Ruby 3.3’s YJIT Runs Shopify’s Production Code 15% Faster
    YassLab
    YassLab 2023/09/21
    “Why is it faster? ... Ruby 3.2 YJIT used to work in the same way for compatibility reasons, but Ruby 3.3 YJIT is able to allocate registers to those operations. In general, accessing CPU registers is much faster than communicating with memory, so Ruby code runs faster with the optimization.”
  • 1