[#63592] [ruby-trunk - Bug #10009] IO operation is 10x slower in multi-thread environment — normalperson@...
Issue #10009 has been updated by Eric Wong.
3 messages
2014/07/08
[#63682] [ruby-trunk - Feature #10030] [PATCH] reduce rb_iseq_struct to 296 bytes — ko1@...
Issue #10030 has been updated by Koichi Sasada.
3 messages
2014/07/13
[#63703] [ruby-trunk - Feature #10030] [PATCH] reduce rb_iseq_struct to 296 bytes — ko1@...
Issue #10030 has been updated by Koichi Sasada.
3 messages
2014/07/14
[#63743] [ruby-trunk - Bug #10037] Since r46798 on Solaris, "[BUG] rb_vm_get_cref: unreachable" during make — ngotogenome@...
Issue #10037 has been updated by Naohisa Goto.
3 messages
2014/07/15
[#64136] Ruby 2.1.2 (and 2.1.1 and probably others) assumes a libffi with 3 version numbers in extconf.rb — "Jeffrey 'jf' Lim" <jfs.world@...>
As per subject.
4 messages
2014/07/31
[#64138] Re: Ruby 2.1.2 (and 2.1.1 and probably others) assumes a libffi with 3 version numbers in extconf.rb
— "Jeffrey 'jf' Lim" <jfs.world@...>
2014/07/31
On Thu, Jul 31, 2014 at 6:03 PM, Jeffrey 'jf' Lim <jfs.world@gmail.com>
[ruby-core:63718] [ruby-trunk - Bug #10009] IO operation is 10x slower in multi-thread environment
From:
alexandre@...
Date:
2014-07-15 01:24:49 UTC
List:
ruby-core #63718
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/