[ruby-core:118588] [Ruby master Bug#20634] ruby uses 1/2 (7 out of 16) cores for 16 ractors with RUBY_MAX_CPU=16 environment variable set

Issue #20634 has been reported by skorobogatydmitry (Dmitry Skorobogaty). ---------------------------------------- Bug #20634: ruby uses 1/2 (7 out of 16) cores for 16 ractors with RUBY_MAX_CPU=16 environment variable set https://bugs.ruby-lang.org/issues/20634 * Author: skorobogatydmitry (Dmitry Skorobogaty) * Status: Open * ruby -v: ruby 3.3.1 (2024-04-23 revision c56cd86388) [x86_64-linux] * Backport: 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN ---------------------------------------- It's a cont for #20618, feel free to close this one and reopen the original bug. According to `top`, the below code uses 7/16 cores (700%) of my AMD Ryzen 7 5800HS: #!/usr/bin/env ruby 16.times { Ractor.new { 10_000.downto(1) { |i| 100_000.downto(1) { |j| i * j } } } } sleep 30 ``` Command I ran is `RUBY_MAX_CPU=16 ruby test.rb`. I also tried to set `RUBY_MN_THREADS=1` as an addition and the script starts to occupy 8 cores instead of 7 (possibly, due to N:M algo allocating an extra core for the blocked main Ractor). The same code occupies all 16 cores on ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x86_64-linux] The problem reproduces on ruby 3.3.3 (2024-06-12 revision f1c7b6f435) [x86_64-linux] (ruby from the latest docker image). -- https://bugs.ruby-lang.org/

Issue #20634 has been updated by skorobogatydmitry (Dmitry Skorobogaty). It's a cont for #20618, feel free to close this one and reopen the original bug. According to top, the below code uses 7/16 cores (700%) of my AMD Ryzen 7 5800HS: ``` #!/usr/bin/env ruby 16.times { Ractor.new { 10_000.downto(1) { |i| 100_000.downto(1) { |j| i * j } } } } sleep 30 ``` Command I ran is `RUBY_MAX_CPU=16 ruby test.rb`. I also tried to set `RUBY_MN_THREADS=1` as an addition and the script starts to occupy 8 cores instead of 7 (possibly, due to N:M algo allocating an extra core for the blocked main Ractor). The same code occupies all 16 cores on ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x86_64-linux] The problem reproduces on ruby 3.3.3 (2024-06-12 revision f1c7b6f435) [x86_64-linux] (ruby from the latest docker image). ---------------------------------------- Bug #20634: ruby uses 1/2 (7 out of 16) cores for 16 ractors with RUBY_MAX_CPU=16 environment variable set https://bugs.ruby-lang.org/issues/20634#change-109113 * Author: skorobogatydmitry (Dmitry Skorobogaty) * Status: Open * ruby -v: ruby 3.3.1 (2024-04-23 revision c56cd86388) [x86_64-linux] * Backport: 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN ---------------------------------------- It's a cont for #20618, feel free to close this one and reopen the original bug. According to `top`, the below code uses 7/16 cores (700%) of my AMD Ryzen 7 5800HS: #!/usr/bin/env ruby 16.times { Ractor.new { 10_000.downto(1) { |i| 100_000.downto(1) { |j| i * j } } } } sleep 30 ``` Command I ran is `RUBY_MAX_CPU=16 ruby test.rb`. I also tried to set `RUBY_MN_THREADS=1` as an addition and the script starts to occupy 8 cores instead of 7 (possibly, due to N:M algo allocating an extra core for the blocked main Ractor). The same code occupies all 16 cores on ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x86_64-linux] The problem reproduces on ruby 3.3.3 (2024-06-12 revision f1c7b6f435) [x86_64-linux] (ruby from the latest docker image). -- https://bugs.ruby-lang.org/

Issue #20634 has been updated by skorobogatydmitry (Dmitry Skorobogaty). I just checked - the problem doesn't repro-es on HEAD (ruby 3.4.0dev (2024-08-09T03:16:23Z master f57167d338) [x86_64-linux]) Could you close it ? ---------------------------------------- Bug #20634: ruby uses 1/2 (7 out of 16) cores for 16 ractors with RUBY_MAX_CPU=16 environment variable set https://bugs.ruby-lang.org/issues/20634#change-109382 * Author: skorobogatydmitry (Dmitry Skorobogaty) * Status: Open * ruby -v: ruby 3.3.1 (2024-04-23 revision c56cd86388) [x86_64-linux] * Backport: 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN ---------------------------------------- It's a cont for #20618, feel free to close this one and reopen the original bug. According to `top`, the below code uses 7/16 cores (700%) of my AMD Ryzen 7 5800HS: ``` #!/usr/bin/env ruby 16.times { Ractor.new { 10_000.downto(1) { |i| 100_000.downto(1) { |j| i * j } } } } sleep 30 ``` Command I ran was `RUBY_MAX_CPU=16 ruby test.rb`. Adding `RUBY_MN_THREADS=1` increases CPU usage to 8 cores, possibly due to N:M for the main Ractor. The same code occupies all 16 cores on ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x86_64-linux] The problem reproduces on ruby 3.3.3 (2024-06-12 revision f1c7b6f435) [x86_64-linux] (ruby from the latest docker image). -- https://bugs.ruby-lang.org/
participants (1)
-
skorobogatydmitry (Dmitry Skorobogaty)