From: alexandre@... Date: 2014-07-09T01:28:31+00:00 Subject: [ruby-core:63596] [ruby-trunk - Bug #10009] IO operation is 10x slower in multi-thread environment Issue #10009 has been updated by Alexandre Riveira. My application is not web-site is an ERP. So reporting and very heavy tasks are performed. Then the system crashes because only one thread using 100% cpu will damage the whole worker, passing any request for at least 2 seconds, then the requests go piling. The key point is a thread using 100% of cpu will make all worker threads just make a few requests for postgres. Ruby Without GVL is that possible?? I believe python works best because it uses part of another cpu (160%) to manage all the threads. Doing the same test with pypy it uses 100% cpu as ruby and presents the same problems as ruby. ---------------------------------------- Bug #10009: IO operation is 10x slower in multi-thread environment https://bugs.ruby-lang.org/issues/10009#change-47649 * Author: Alexandre Riveira * Status: Open * Priority: Urgent * Assignee: * Category: * Target version: * ruby -v: ruby 2.1 x ruby 1.9.2 with taskset * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN ---------------------------------------- I created this issue #9832 but not have io operation. In the script attached I simulate IO operation in multi-thread environment. For ruby 1.9.2 apply `taskset -c -p 2 #{Process.pid}` for regulates threads behavior. The second Thread is a io operation My results: 1) ruby 2.1.2 first 43500194 second 95 third 42184385 2) ruby-2.0.0-p451 first 38418401 second 95 third 37444470 3) 1.9.3-p545 first 121260313 second 50 third 44275164 4) 1.9.2-p320 first 31189901 second 897 <============ third 31190598 Regards Alexandre Riveira ---Files-------------------------------- teste_thread_schedule_2.rb (1.05 KB) teste_thread_schedule.py (953 Bytes) teste_thread_schedule.rb (955 Bytes) test_thread_sched_pipe.rb (1.01 KB) -- https://bugs.ruby-lang.org/