From: _ wanabe Date: 2009-10-30T12:56:00+09:00 Subject: [ruby-core:26428] [Bug #1325] fiber tests kill windows Issue #1325 has been updated by _ wanabe. Thank you, Nobu. I rewrote the patch in accordance with your advise. And finally, I found which makes disk-swapping. File.open('large.png', 'r:ascii-8bit') in test/cgi/test_cgi_multipart.rb does. It does realloc many times and increases malloc_limit in gc.c. Interestingly, mode 'rb:ascii-8bit' gets rid of the problem. This is another example that enlargement of malloc_limit obstructs GC. $ cat test.rb require 'benchmark' a = [] 10.times do |i| ARGV[0].to_i.times do a[10000] = nil a.clear end end GC.start GC::Profiler.enable Benchmark.bm do |bm| bm.report do 100_000.times do Fiber.new{}.resume end end end gc_result = GC::Profiler.result.split(/\n/) gc_result[4..-3] = "(snip)" puts nil, gc_result $ ./ruby -v test.rb 0 ruby 1.9.2dev (2009-10-30 trunk 25566) [i386-mingw32] user system total real 4.516000 1.844000 6.360000 ( 7.109375) GC 294 invokes. Index Invoke Time(sec) Use Size(byte) Total Size(byte) Total Object GC Time(ms) 1 0.109 70704 229376 9548 0.00000000000000000000 2 0.109 70776 229376 9548 15.62500000000000000000 (snip) 292 4.594 70776 229376 9548 0.00000000000000000000 293 4.609 70776 229376 9548 0.00000000000000000000 $ ./ruby -v test.rb 10000 ruby 1.9.2dev (2009-10-30 trunk 25566) [i386-mingw32] user system total real 6.406000 3.406000 9.812000 (108.718750) GC 6 invokes. Index Invoke Time(sec) Use Size(byte) Total Size(byte) Total Object GC Time(ms) 1 5.375 70728 245760 10230 0.00000000000000000000 2 5.562 70752 425984 17732 0.00000000000000000000 (snip) 4 6.844 70848 1343488 55924 0.00000000000000000000 5 9.266 70872 2392064 99572 0.00000000000000000000 ---------------------------------------- http://redmine.ruby-lang.org/issues/show/1325 ---------------------------------------- http://redmine.ruby-lang.org