From: alexandre@... Date: 2014-07-08T09:56:41+00:00 Subject: [ruby-core:63589] [ruby-trunk - Bug #10009] IO operation is 10x slower in multi-thread environment 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/