From: nekoyama32767@... Date: 2021-06-17T03:28:48+00:00 Subject: [ruby-core:104328] [Ruby master Bug#17995] Slow down when mjit and Ractor are being used at same time Issue #17995 has been reported by nekoyama32767 (Jinsong Yu). ---------------------------------------- Bug #17995: Slow down when mjit and Ractor are being used at same time https://bugs.ruby-lang.org/issues/17995 * Author: nekoyama32767 (Jinsong Yu) * Status: Open * Priority: Normal * ruby -v: Ruby 3.0.1p64 (2021-04-05 revison 0fb782ee38)[x86-64-linux] ruby 3.0.1p64 (2021-04-05 revision 0fb782ee38) [x64-mingw32] * Backport: 2.6: UNKNOWN, 2.7: UNKNOWN, 3.0: UNKNOWN ---------------------------------------- When using --jit and Ractor at same time, benchmark would be slow down with recursion function such like Tarai function an Fibonacci function. The slow down is confirmed under both gcc(linux) and mingw64(windows MSYS2). Test environment: Cpu:Ryzen9 5900HS@3.3Ghz 8core/16thread Memory:32GB@3200Mhz OS:Ubuntu 21.04/Windows 10 Because of this cpu has 8 physic core,the parallel thread number is set to 8 Slow down is also confirmed with using only ractor (without sequence running). When runing 'par' before 'seq' and using --mjit,'seq' is more slower than runing 'seq' berfore 'par' Tarai function def tarai(x, y, z) = x <= y ? y : tarai(tarai(x-1, y, z), tarai(y-1, z, x), tarai(z-1, x, y)) require 'benchmark' Benchmark.bm do |x| # sequential version x.report('seq'){ 8.times{ tarai(14, 7, 0) } } # parallel version x.report('par'){ 8.times.map do Ractor.new { tarai(14, 7, 0) } end.each(&:take) } end Fibonacci function def fib(n) if n==1 then return 1 end if n==2 then return 1 end fib(n-1)+fib(n-2) end require 'benchmark' Benchmark.bm do |x| # sequential version x.report('fib:seq'){ 8.times{ fib(40) } } # parallel version x.report('fib:par '){ 8.times.map do Ractor.new {fib(40) } end.each(&:take) } end -- https://bugs.ruby-lang.org/ Unsubscribe: