From: "jeremyevans0 (Jeremy Evans) via ruby-core" <ruby-core@...>
Date: 2023-08-25T17:35:19+00:00
Subject: [ruby-core:114554] [Ruby master Bug#18454] YJIT slowing down key Discourse benchmarks

Issue #18454 has been updated by jeremyevans0 (Jeremy Evans).

Status changed from Open to Closed

YJIT in Ruby 3.2 was significantly improved from Ruby 3.1, and has further been improved.  If YJIT in current Ruby master is still resulting in a slowdown for Discourse, please post an update.

----------------------------------------
Bug #18454: YJIT slowing down key Discourse benchmarks
https://bugs.ruby-lang.org/issues/18454#change-104361

* Author: sam.saffron (Sam Saffron)
* Status: Closed
* Priority: Normal
* ruby -v: 3.1.0p0
* Backport: 2.6: UNKNOWN, 2.7: UNKNOWN, 3.0: UNKNOWN, 3.1: UNKNOWN
----------------------------------------

4 out of 6 key Discourse benchmarks used in: https://github.com/discourse/discourse/blob/main/script/bench.rb are slower under YJIT. 

Vanilla (median) -> YJIT (median)

Categories: 47ms -> 51
Home page: 85 -> 86
Topic: 42 -> 38
Categories Admin: 48 -> 50
Home Admin: 83 -> 84
Topic Admin: 43 -> 39
Boot: 1740ms -> 2484ms 
RSS: 358756 -> 640540

This was run with a simple `RUBYOPT='--enable-yjit' ruby script/bench.rb -i 100 -s`


To get Discourse working with Ruby 3.1 you will need: 



```
diff --git a/Gemfile b/Gemfile
index 9cdfbf21a9..403c428718 100644
--- a/Gemfile
+++ b/Gemfile
@@ -263,3 +263,11 @@ gem 'colored2', require: false
 gem 'maxminddb'
 
 gem 'rails_failover', require: false
+
+if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.0.0")
+  gem 'net-pop', require: false
+  gem 'net-smtp', require: false
+  gem 'net-imap', require: false
+  # waiting on new version of i18n gem
+  gem 'psych', '3.3.2'
+end
```


It is clear that memory usage and boot time have to take a hit here, but slowing down home page seems concerning. Any ideas on what we should test here and how to narrow this down? 



-- 
https://bugs.ruby-lang.org/
 ______________________________________________
 ruby-core mailing list -- ruby-core@ml.ruby-lang.org
 To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
 ruby-core info -- https://ml.ruby-lang.org/mailman3/postorius/lists/ruby-core.ml.ruby-lang.org/