Actions
Bug #14490
closedMJIT slows down Rails applications
Description
This was reported earlier but I would like to add some test methodology here: (tested using Discourse)
What I tested¶
-
Run
ruby script/bench.rb
to warm up profiling database -
Run
RUBYOPT='--jit --jit-verbose=1 --jit-max-cache=10000' RAILS_ENV=profile bin/puma -e production
- Increasing the cache size is an attempt to get higher hit rates
-
WAIT 5-15 or so minutes for all jitting to stop so we have no cross talk
-
Run
ab -n 100 http://localhost:9292/
-
Wait for all new jitting to finish
-
Run
ab -n 100 http://localhost:9292/
The absolute best I get is around 61ms median for the test. With MJIT
This is MJIT results!
Percentage of the requests served within a certain time (ms)
50% 61
66% 63
75% 70
80% 71
90% 73
95% 83
98% 106
99% 109
100% 109 (longest request)
Compared to w/o MJIT which is:
Percentage of the requests served within a certain time (ms)
50% 47
66% 48
75% 50
80% 51
90% 60
95% 62
98% 75
99% 77
100% 77 (longest request)
Theory on why this happens¶
I suspect this is happening cause we are introducing new overhead to every single method dispatch (counting for mjit, and hash lookup and so on). This overhead adds up.
Actions
Like0
Like0Like0Like0Like0