From: alexandre@... Date: 2014-07-15T01:24:49+00:00 Subject: [ruby-core:63718] [ruby-trunk - Bug #10009] IO operation is 10x slower in multi-thread environment Issue #10009 has been updated by Alexandre Riveira. Hi Eric ! Eric Wong wrote: > Good to know it works for you. Keep in mind TIME_QUANTUM_USEC=1000 is What problems do I have? > > Can you try 20-50ms? In the application do a stress test where 5 threads overload. I tested 50 and the latency is over the next 15 seconds. I tested the latency is 20 and next 10 seconds. I tested the latency is 10 and next 4 or 5 seconds. The magic number is TIME_QUANTUM_USEC=1000. There is no latency in this case Follow microbenckmars teste_thread_schedule_2 with postgres TIME_QUANTUM_USEC (1000) first 22882400 second 2654 <=== third 22642172 in 21.08 seconds 2654 / 21.08 is 125 connections for database per second TIME_QUANTUM_USEC (20 * 1000) first 33003617 second 258 <== third 33851933 in 23.07 seconds 258 / 23.07 is 11 connections for database per second. I think this small amount of connections per second but accept comments. TIME_QUANTUM_USEC (50 * 1000) first 42811975 second 116 third 42005480 in 25.12 seconds 116 / 25.12 is 5 connections for database per second. ---------------------------------------- Bug #10009: IO operation is 10x slower in multi-thread environment https://bugs.ruby-lang.org/issues/10009#change-47765 * 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/