[ruby-core:118496] [Ruby master Bug#20618] ruby uses 1/2 (8 out of 16) cores for 16 ractors

Issue #20618 has been reported by skorobogatydmitry (Dmitry Skorobogaty). ---------------------------------------- Bug #20618: ruby uses 1/2 (8 out of 16) cores for 16 ractors https://bugs.ruby-lang.org/issues/20618 * 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 ---------------------------------------- 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 ``` 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 #20618 has been updated by alanwu (Alan Wu). Status changed from Open to Closed I think this is an intended change from #19842. Please correct me if I'm wrong @ko1. Emphasis mine:
On the multiple Ractors, N (+ alpha) native threads run M ractors. **Now there is no way to disable M:N threads on multiple Ractors** because there are only a few multi-Ractor programs and no compatibility issues.
---------------------------------------- Bug #20618: ruby uses 1/2 (7 out of 16) cores for 16 ractors https://bugs.ruby-lang.org/issues/20618#change-109055 * Author: skorobogatydmitry (Dmitry Skorobogaty) * Status: Closed * ruby -v: ruby 3.3.1 (2024-04-23 revision c56cd86388) [x86_64-linux] * Backport: 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN ---------------------------------------- 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 ``` 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 #20618 has been updated by ko1 (Koichi Sasada). Thanks @alanwu Please use `RUBY_MAX_PROC` to increase the processors. ---------------------------------------- Bug #20618: ruby uses 1/2 (7 out of 16) cores for 16 ractors https://bugs.ruby-lang.org/issues/20618#change-109059 * Author: skorobogatydmitry (Dmitry Skorobogaty) * Status: Closed * ruby -v: ruby 3.3.1 (2024-04-23 revision c56cd86388) [x86_64-linux] * Backport: 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN ---------------------------------------- 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 ``` 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 (3)
-
alanwu (Alan Wu)
-
ko1 (Koichi Sasada)
-
skorobogatydmitry (Dmitry Skorobogaty)