[#27380] [Bug #2553] Fix pthreads slowness by eliminating unnecessary sigprocmask calls — Dan Peterson <redmine@...>

Bug #2553: Fix pthreads slowness by eliminating unnecessary sigprocmask calls

21 messages 2010/01/03

[#27437] [Feature #2561] 1.8.7 Patch reduces time cost of Rational operations by 50%. — Kurt Stephens <redmine@...>

Feature #2561: 1.8.7 Patch reduces time cost of Rational operations by 50%.

9 messages 2010/01/06

[#27447] [Bug #2564] [patch] re-initialize timer_thread_{lock,cond} after fork — Aliaksey Kandratsenka <redmine@...>

Bug #2564: [patch] re-initialize timer_thread_{lock,cond} after fork

18 messages 2010/01/06

[#27545] [Feature #2594] 1.8.7 Patch: Reduce time spent in gc.c is_pointer_to_heap(). — Kurt Stephens <redmine@...>

Feature #2594: 1.8.7 Patch: Reduce time spent in gc.c is_pointer_to_heap().

8 messages 2010/01/11

[#27635] [Bug #2619] Proposed method: Process.fork_supported? — Hongli Lai <redmine@...>

Bug #2619: Proposed method: Process.fork_supported?

45 messages 2010/01/20
[#27643] [Feature #2619] Proposed method: Process.fork_supported? — Luis Lavena <redmine@...> 2010/01/21

Issue #2619 has been updated by Luis Lavena.

[#27678] Re: [Feature #2619] Proposed method: Process.fork_supported? — Yukihiro Matsumoto <matz@...> 2010/01/22

Hi,

[#27684] Re: [Feature #2619] Proposed method: Process.fork_supported? — Charles Oliver Nutter <headius@...> 2010/01/22

On Thu, Jan 21, 2010 at 11:27 PM, Yukihiro Matsumoto <matz@ruby-lang.org> wrote:

[#27708] Re: [Feature #2619] Proposed method: Process.fork_supported? — Yukihiro Matsumoto <matz@...> 2010/01/22

Hi,

[#27646] Re: [Bug #2619] Proposed method: Process.fork_supported? — Tanaka Akira <akr@...> 2010/01/21

2010/1/21 Hongli Lai <redmine@ruby-lang.org>:

[#27652] Re: [Bug #2619] Proposed method: Process.fork_supported? — Hongli Lai <hongli@...99.net> 2010/01/21

On 1/21/10 5:20 AM, Tanaka Akira wrote:

[#27653] Re: [Bug #2619] Proposed method: Process.fork_supported? — Tanaka Akira <akr@...> 2010/01/21

2010/1/21 Hongli Lai <hongli@plan99.net>:

[#27662] Re: [Bug #2619] Proposed method: Process.fork_supported? — Vladimir Sizikov <vsizikov@...> 2010/01/21

On Thu, Jan 21, 2010 at 10:53 AM, Tanaka Akira <akr@fsij.org> wrote:

[#27698] [Bug #2629] ConditionVariable#wait(mutex, timeout) should return whether the condition was signalled, not the waited time — Hongli Lai <redmine@...>

Bug #2629: ConditionVariable#wait(mutex, timeout) should return whether the condition was signalled, not the waited time

8 messages 2010/01/22

[#27722] [Feature #2635] Unbundle rdoc — Yui NARUSE <redmine@...>

Feature #2635: Unbundle rdoc

14 messages 2010/01/23

[#27757] [Bug #2638] ruby-1.9.1-p37[68] build on aix5.3 with gcc-4.2 failed to run for me because it ignores where libgcc is located. — Joel Soete <redmine@...>

Bug #2638: ruby-1.9.1-p37[68] build on aix5.3 with gcc-4.2 failed to run for me because it ignores where libgcc is located.

10 messages 2010/01/24

[#27778] [Bug #2641] Seg fault running miniruby during ruby build on Haiku — Alexander von Gluck <redmine@...>

Bug #2641: Seg fault running miniruby during ruby build on Haiku

10 messages 2010/01/25

[#27791] [Bug #2644] memory over-allocation with regexp — Greg Hazel <redmine@...>

Bug #2644: memory over-allocation with regexp

12 messages 2010/01/25

[#27794] [Bug #2647] Lack of testing for String#split — Hugh Sasse <redmine@...>

Bug #2647: Lack of testing for String#split

14 messages 2010/01/25

[#27912] [Bug #2669] mkmf find_executable doesn't find .bat files — Roger Pack <redmine@...>

Bug #2669: mkmf find_executable doesn't find .bat files

11 messages 2010/01/27

[#27930] [Bug:trunk] some behavior changes of lib/csv.rb between 1.8 and 1.9 — Yusuke ENDOH <mame@...>

Hi jeg2, or anyone who knows the implementation of FasterCSV,

15 messages 2010/01/28
[#27931] Re: [Bug:trunk] some behavior changes of lib/csv.rb between 1.8 and 1.9 — James Edward Gray II <james@...> 2010/01/28

On Jan 28, 2010, at 10:51 AM, Yusuke ENDOH wrote:

[ruby-core:27957] [Bug #2690] IO#select unable to select for < 0.015s

From: Roger Pack <redmine@...>
Date: 2010-01-29 18:31:15 UTC
List: ruby-core #27957
Bug #2690: IO#select unable to select for < 0.015s
http://redmine.ruby-lang.org/issues/show/2690

Author: Roger Pack
Status: Open, Priority: Normal
ruby -v: ruby 1.9.2dev (2010-01-29) [i386-mingw32]

In my investigation related to the previous "cannot select for < 0.10s on windows" but, here is the current situation (in windows).

This code, run with 1.9.2 trunk:

require 'benchmark'
a = TCPSocket.new('google.com', 80)
puts Benchmark.realtime { 10.times { IO.select([a], nil, nil, 0) } }

always outputs 0.15s (expected to output much less--1.8 outputs 0)

What is happening is that within select, the subtract(timeval, timeval) method is not accomodating for timeval's that are equal.  We are using GetSystemTimeAsFileTime for gettimeofday, its resolution is 15ms[1], which means that for the first 15ms, gettimeofday is returning equal time stamps, and select is looping doing select over and over again, for 0.015s per select.

Allowing subtract to accomodate for the same timestamp seems to fix the problem.

Another option would be to use QueryPerformanceCounter instead of GetSystemTimeAsFileTime[1].  You'll notice also that Time.now (and Benchmark.realtime, etc.) have increments of 0.015s, etc. but accomodating for this would be a bit more involved, and perhaps material for another, separate patch (I...think subtract should by default accomodate for equal values, anyway, even in linux, so this patch is still good, either way).

Thanks for your consideration.
-rp
[1] http://msdn.microsoft.com/en-us/magazine/cc163996.aspx

Index: thread.c
===================================================================
--- thread.c    (revision 26462)
+++ thread.c    (working copy)
@@ -2403,6 +2403,8 @@
     }
     rest->tv_sec -= wait->tv_sec;
     rest->tv_usec -= wait->tv_usec;
+    if(rest->tv_sec == 0 && rest->tv_usec == 0)
+       return 0;
     return 1;
 }
 #endif
Index: win32/win32.c
===================================================================
--- win32/win32.c       (revision 26462)
+++ win32/win32.c       (working copy)
@@ -2389,6 +2389,9 @@
     }
     rest->tv_sec -= wait->tv_sec;
     rest->tv_usec -= wait->tv_usec;
+    if(rest->tv_sec == 0 && rest->tv_usec == 0)
+       return 0;
+
     return 1;
 }


----------------------------------------
http://redmine.ruby-lang.org

In This Thread

Prev Next