Issue #10009 has been updated by Alexandre Riveira.

File teste_thread_schedule.py added
File teste_thread_schedule.rb added

Eric Wong wrote:
> I'll try resurrecting an old eventfd proposal and maybe also bare futexes
>  to see if that improves things.

Tank's Eric,

If an application running Rainbows has only one thread using 100% the worker is affected greatly in the query database. The solution is to try the fork worker for heavy tasks but often this is not possible.

GIL in Pyhton is better but use 160% of cpu and ruby use 100% of cpu. 



----------------------------------------
Bug #10009: IO operation is 10x slower in multi-thread environment
https://bugs.ruby-lang.org/issues/10009#change-47643

* 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)


-- 
https://bugs.ruby-lang.org/