Issue #9201 has been updated by tmm1 (Aman Gupta).


With this patch along with the one in r43973, minor GC pauses are now up to 45% shorter in our application.

10.times{ s=Time.now; GC.start_minor; p Time.now-s }

# r43972
0.034701
0.034337
0.038741
0.034126
0.037504
0.033009
0.034526
0.033238
0.034232
0.032667

# r43973
0.029089
0.027402
0.027296
0.026581
0.028211
0.026294
0.028213
0.030031
0.026412
0.02695

# r43974
0.024061
0.021339
0.022207
0.022007
0.022716
0.02303
0.022139
0.021704
0.022118
0.021611

----------------------------------------
Bug #9201: [patch] remove GC overhead for loaded_features_index
https://bugs.ruby-lang.org/issues/9201#change-43393

Author: tmm1 (Aman Gupta)
Status: Closed
Priority: Normal
Assignee: nobu (Nobuyoshi Nakada)
Category: 
Target version: current: 2.1.0
ruby -v: ruby 2.1.0dev (2013-12-02 trunk 43955)
Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN


I was profiling minor GC in our app and noticed 15% of time spent in mark_tbl for loaded_features_index.

The following patch removes this overhead by storing feature offsets outside the ruby heap:

  https://github.com/tmm1/ruby/commit/d03c5ece865422f0510957c1dee1d33a1d9eca82


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