export RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR=0.9
on vmware-medium environment and the impact of that + GC.start(before/after) benchmark shows a decrease of ~70MiB however the "used" RSS is still not close to 5.4 levels
2015-10-07 10:01:28,285 [I] Running command `export RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR=0.9; cd /var/www/miq/vmdb; echo "ActiveRecord::Base.logger.level = 1;mrss_start = MiqProcess.processInfo()[:memory_usage];vmem_start = MiqProcess.processInfo[:memory_size];gc_start = GC.stat;e = ExtManagementSystem.find_by_name('vmware-large');GC.start;timing = Benchmark.realtime {EmsRefresh.refresh e};GC.start;mrss_end = MiqProcess.processInfo()[:memory_usage];vmem_end = MiqProcess.processInfo[:memory_size];gc_end = GC.stat;mrss_change = mrss_end - mrss_start;vmem_change = vmem_end - vmem_start;puts \"#{mrss_start}, #{mrss_end}, #{mrss_change}\";puts \"#{vmem_start}, #{vmem_end}, #{vmem_change}\";puts \"#{gc_start}\";puts \"#{gc_end}\";puts Process.pid;timing" | bundle exec bin/rails c 2> /dev/null` (utils/ssh.py:130)
2015-10-07 10:37:56,280 [D] pbench stop-tools skipped due to ['pbench']['disable'] set to true. (utils/perf.py:406)
2015-10-07 10:37:56,286 [I] Iteration: 0, Timing: 2175.90035641, Process: 16514 (utils/perf.py:314)
2015-10-07 10:37:56,289 [I] RSS Memory start: 174440448, end: 990314496, change: 815874048 (utils/perf.py:316)
2015-10-07 10:37:56,291 [I] Virt Memory start: 476307456, end: 1368248320, change: 891940864 (utils/perf.py:318)
2015-10-07 10:37:56,293 [I] GC stat start: {:count=>64, :heap_allocated_pages=>2132, :heap_sorted_length=>2226, :heap_allocatable_pages=>0, :heap_available_slots=>869039, :heap_live_slots=>747753, :heap_free_slots=>121286, :heap_final_slots=>0, :heap_marked_slots=>75984, :heap_swept_slots=>299252, :heap_eden_pages=>2132, :heap_tomb_pages=>0, :total_allocated_pages=>2648, :total_freed_pages=>516, :total_allocated_objects=>6944659, :total_freed_objects=>6196906, :malloc_increase_bytes=>371216, :malloc_increase_bytes_limit=>16777216, :minor_gc_count=>1, :major_gc_count=>63, :remembered_wb_unprotected_objects=>846, :remembered_wb_unprotected_objects_limit=>19514, :old_objects=>74409, :old_objects_limit=>475927, :oldmalloc_increase_bytes=>371664, :oldmalloc_increase_bytes_limit=>16777216} (utils/perf.py:319)
2015-10-07 10:37:56,296 [I] GC stat end: {:count=>1444, :heap_allocated_pages=>11972, :heap_sorted_length=>22405, :heap_allocatable_pages=>8798, :heap_available_slots=>4879821, :heap_live_slots=>3443087, :heap_free_slots=>1436734, :heap_final_slots=>0, :heap_marked_slots=>3440265, :heap_swept_slots=>5028327, :heap_eden_pages=>11969, :heap_tomb_pages=>3, :total_allocated_pages=>15586, :total_freed_pages=>3614, :total_allocated_objects=>213339677, :total_freed_objects=>209896590, :malloc_increase_bytes=>85840, :malloc_increase_bytes_limit=>16777216, :minor_gc_count=>1, :major_gc_count=>1443, :remembered_wb_unprotected_objects=>38998, :remembered_wb_unprotected_objects_limit=>35098, :old_objects=>3373979, :old_objects_limit=>3036581, :oldmalloc_increase_bytes=>86288, :oldmalloc_increase_bytes_limit=>16777216} (utils/perf.py:320)
2015-10-07 10:37:56,298 [I] RSS Mem Total(Console + Benchmark) Used: 944.4375 MiB (utils/perf.py:322)
2015-10-07 10:37:56,300 [I] RSS Mem Change(Benchmark) Used: 778.078125 MiB (utils/perf.py:323)
2015-10-07 10:37:56,302 [I] Virt Mem Total(Console + Benchmark) Used: 1304.86328125 MiB (utils/perf.py:325)
2015-10-07 10:37:56,305 [I] Virt Mem Change(Benchmark) Used: 850.62109375 MiB (utils/perf.py:326)
export RUBY_GC_HEAP_GROWTH_FACTOR=1.1
export RUBY_GC_MALLOC_LIMIT=4000100
export RUBY_GC_MALLOC_LIMIT_MAX=16000100
export RUBY_GC_MALLOC_LIMIT_GROWTH_FACTOR=1.1
export RUBY_GC_OLDMALLOC_LIMIT_MAX=16000100
2.2.3 213942272 2759380992
2.2.3 833331200 3938070528
94.996781 seconds
2.2.3 198332416 2743435264
2.2.3 607002624 3206205440
93.109235 seconds
last few seconds of the refresh
That's database
app/models/ems_refresh/refreshers/ems_refresher_mixin.rb
… parse_inventory
vs save_inventory
Are we interested in all allocations or retained objects?
Not sure...whichever one points us to the line of code to fix ;)
2.2.3 201523200 2727923712 Before EmsRefresh.refresh
2.2.3 206864384 2733166592 Before get_vc_data_total
2.2.3 592019456 3160674304 Before refresh_target
2.2.3 725757952 3324502016 Before post_refresh_ems
2.2.3 833851392 3878154240 After EmsRefresh.refresh
{:get_ems_data=>0.3343837261199951,
:get_vc_data=>19.349103927612305,
:get_vc_data_ems_customization_specs=>0.03280520439147949,
:filter_vc_data=>0.0002720355987548828,
:get_vc_data_host_scsi=>3.6980948448181152,
:get_vc_data_total=>23.454447984695435,
:parse_vc_data=>0.9565079212188721,
:db_save_inventory=>56.88113594055176,
:post_refresh_ems=>4.460295915603638,
:total_time=>85.79023313522339}
All get_and_filter_vc_data allocations
2335464 /Users/joerafaniello/Code/manageiq/gems/pending/VMwareWebService/MiqVimInventory.rb:2361 T_STRING String
1719840 /Users/joerafaniello/Code/manageiq/gems/pending/VMwareWebService/MiqVimInventory.rb:2361 T_STRING VimString
450850 /Users/joerafaniello/Code/manageiq/gems/pending/VMwareWebService/VimService.rb:1192 T_STRING String
365319 /Users/joerafaniello/Code/manageiq/gems/pending/VMwareWebService/MiqVimInventory.rb:2383 T_STRING String
345241 /Users/joerafaniello/Code/manageiq/gems/pending/VMwareWebService/MiqVimInventory.rb:2383 T_ARRAY Array
292114 /Users/joerafaniello/Code/manageiq/gems/pending/VMwareWebService/VimService.rb:1230 T_STRING String
225419 /Users/joerafaniello/Code/manageiq/gems/pending/VMwareWebService/VimService.rb:1190 T_STRING String
225405 /Users/joerafaniello/Code/manageiq/gems/pending/VMwareWebService/VimService.rb:1196 T_DATA Nokogiri::XML::NodeSet
211350 /Users/joerafaniello/Code/manageiq/gems/pending/VMwareWebService/VimService.rb:1221 T_STRING String
211347 /Users/joerafaniello/Code/manageiq/gems/pending/VMwareWebService/VimService.rb:1219 T_STRING String
184957 /Users/joerafaniello/Code/manageiq/gems/pending/VMwareWebService/VimService.rb:1194 T_STRING String
175944 /Users/joerafaniello/Code/manageiq/gems/pending/VMwareWebService/VimService.rb:1197 T_STRING VimString
172990 /Users/joerafaniello/Code/manageiq/gems/pending/VMwareWebService/MiqVimInventory.rb:2366 T_STRING String
163151 /Users/joerafaniello/Code/manageiq/gems/pending/VMwareWebService/VimService.rb:1197 T_STRING String
137177 /Users/joerafaniello/Code/manageiq/gems/pending/VMwareWebService/MiqVimInventory.rb:2245 T_STRING String
137154 /Users/joerafaniello/Code/manageiq/gems/pending/VMwareWebService/MiqVimInventory.rb:2243 T_ARRAY Array
103135 /Users/joerafaniello/Code/manageiq/gems/pending/VMwareWebService/VimTypes.rb:43 T_STRING String
86227 /Users/joerafaniello/Code/manageiq/gems/pending/VMwareWebService/MiqVimInventory.rb:2239 T_STRING String
76676 /Users/joerafaniello/Code/manageiq/gems/pending/VMwareWebService/MiqVimInventory.rb:2359 T_STRING String
76634 /Users/joerafaniello/Code/manageiq/gems/pending/VMwareWebService/MiqVimInventory.rb:2361 T_ARRAY Array
76619 /Users/joerafaniello/Code/manageiq/gems/pending/VMwareWebService/MiqVimInventory.rb:2361 T_MATCH MatchData
76450 /Users/joerafaniello/Code/manageiq/gems/pending/VMwareWebService/MiqVimInventory.rb:2357 T_ARRAY Array
76435 /Users/joerafaniello/Code/manageiq/gems/pending/VMwareWebService/MiqVimInventory.rb:2361 T_NODE
67711 /Users/joerafaniello/.gem/ruby/2.2.3/gems/nokogiri-1.6.6.2/lib/nokogiri/xml/node_set.rb:187 T_DATA Nokogiri::XML::Element
62251 /Users/joerafaniello/Code/manageiq/gems/pending/VMwareWebService/VimService.rb:1199 T_STRING String
61384 /Users/joerafaniello/Code/manageiq/gems/pending/VMwareWebService/VimService.rb:1203 T_NODE
59273 /Users/joerafaniello/Code/manageiq/gems/pending/VMwareWebService/VimService.rb:1228 T_STRING String
56917 /Users/joerafaniello/Code/manageiq/gems/pending/VMwareWebService/VimService.rb:1216 T_DATA Nokogiri::XML::NodeSet
56911 /Users/joerafaniello/Code/manageiq/gems/pending/VMwareWebService/VimService.rb:1216 T_DATA RubyVM::Env
56907 /Users/joerafaniello/Code/manageiq/gems/pending/VMwareWebService/VimService.rb:1216 T_DATA Proc
56158 /Users/joerafaniello/Code/manageiq/gems/pending/VMwareWebService/VimService.rb:1196 T_DATA Nokogiri::XML::Text
{:count=>26,
:heap_allocated_pages=>236,
:heap_sorted_length=>237,
:heap_allocatable_pages=>0,
:heap_available_slots=>96193,
:heap_live_slots=>95955,
:heap_free_slots=>238,
:heap_final_slots=>0,
:heap_marked_slots=>58135,
:heap_swept_slots=>28803,
:heap_eden_pages=>236,
:heap_tomb_pages=>0,
:total_allocated_pages=>236,
:total_freed_pages=>0,
:total_allocated_objects=>654884,
:total_freed_objects=>558929,
:malloc_increase_bytes=>122256,
:malloc_increase_bytes_limit=>16777216,
:minor_gc_count=>22,
:major_gc_count=>4,
:remembered_wb_unprotected_objects=>648,
:remembered_wb_unprotected_objects_limit=>760,
:old_objects=>57452,
:old_objects_limit=>70352,
:oldmalloc_increase_bytes=>2253744,
:oldmalloc_increase_bytes_limit=>16777216}
total_allocated_objects - total_freed_objects
sounds plausible, I think?
heap_live_slots
¯\_(ツ)_/¯
diff --git a/gems/pending/VMwareWebService/MiqVimInventory.rb b/gems/pending/VMwareWebService/MiqVimInventory.rb
index 86e4376..7d21c34 100644
--- a/gems/pending/VMwareWebService/MiqVimInventory.rb
+++ b/gems/pending/VMwareWebService/MiqVimInventory.rb
@@ -2354,28 +2354,7 @@ def hashTarget(baseHash, keyString, create = false)
# Array keys (between "[" and "]") can contain ".", so we can't just use split.
#
def splitPropPath(propPath)
- pathArray = []
- inKey = false
- pc = ''
-
- propPath.split(//).each do |c|
- case c
- when '.'
- unless inKey
- pathArray << pc
- pc = ''
- next
- end
- when '['
- inKey = true
- when ']'
- inKey = false
- end
- pc << c
- end
- pathArray << pc unless pc.empty?
-
- pathArray
+ propPath.scan(/(?:[^\[\].]|\[[^\]]*\])+/)
end
private :splitPropPath
'['
on the former 2383 (first line of tagAndKey
)
memory_usage | total_allocated_objects | total_freed_objects
215818240 | 7141858 | 6232783 | Before before_refresh
217022464 | 7253421 | 6344317 | Before get_and_filter_vc_data
608546816 | 19807911 | 17595879 | Before refresh_target
726130688 | 51844717 | 47177787 | Before post_refresh_ems
831467520 | 54422815 | 50023942 | Before after_refresh
87.569556 seconds
memory_usage | total_allocated_objects | total_freed_objects
214974464 | 7141742 | 6235690 | Before before_refresh
215568384 | 7253302 | 6347871 | Before get_and_filter_vc_data
611176448 | 14631697 | 12536579 | Before refresh_target
740704256 | 46668499 | 41810066 | Before post_refresh_ems
851464192 | 49246597 | 45065894 | Before after_refresh
85.229173 seconds
'['.freeze
on 2383 on top of the one liner
memory_usage | total_allocated_objects | total_freed_objects
218435584 | 7141741 | 6236360 | Before before_refresh
220733440 | 7253304 | 6347693 | Before get_and_filter_vc_data
575627264 | 14168945 | 12027147 | Before refresh_target
716480512 | 46205751 | 41434415 | Before post_refresh_ems
834543616 | 48783849 | 44182226 | Before after_refresh
sed -i 's/def self.init_console(use_vim_broker = false)/def self.init_console(use_vim_broker = true)/g' /var/www/miq/vmdb/app/models/ems_refresh.rb
sed -i 's/@active_roles.include?("ems_inventory") ? :cache_scope_ems_refresh : :cache_scope_core/@active_roles.include?("ems_inventory") ? :cache_scope_ems_refresh : :cache_scope_ems_refresh/g' /var/www/miq/vmdb/app/models/miq_vim_broker_worker/runner.rb
was == 5.5.0.3 benchmaked without
sed -i 's/@active_roles.include?("ems_inventory") ? :cache_scope_ems_refresh : :cache_scope_core/@active_roles.include?("ems_inventory") ? :cache_scope_ems_refresh : :cache_scope_ems_refresh/g' /var/www/miq/vmdb/app/models/miq_vim_broker_worker/runner.rb
now == 5.5.0.3 patched for cache_scope_ems_refresh
export RUBY_GC_HEAP_GROWTH_FACTOR=1.1
export RUBY_GC_MALLOC_LIMIT=4000100
export RUBY_GC_MALLOC_LIMIT_MAX=16000100
export RUBY_GC_MALLOC_LIMIT_GROWTH_FACTOR=1.1
export RUBY_GC_OLDMALLOC_LIMIT_MAX=16000100
EmsRefresh.init_console(true)
or something to that effect
m: 106,980,163 | c: 560,279 | :
m: 12,360,518 | c: 8,129 | /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/autosave_association.rb:152
m: 10,421,095 | c: 7,153 | /Users/joerafaniello/.gem/ruby/2.2.3/gems/activesupport-4.2.4/lib/active_support/core_ext/hash/transform_values.rb:9
m: 10,393,030 | c: 7,134 | /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/attribute_methods/dirty.rb:165
m: 7,042,115 | c: 46,558 | /Users/joerafaniello/Code/manageiq/gems/pending/VMwareWebService/VimService.rb:1197
m: 7,022,886 | c: 97,467 | /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/attribute.rb:9
m: 6,829,222 | c: 94,756 | /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/attribute.rb:5
m: 6,088,196 | c: 151,819 | /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/attribute_set/builder.rb:79
m: 3,904,176 | c: 8,981 | /Users/joerafaniello/.gem/ruby/2.2.3/gems/activemodel-4.2.4/lib/active_model/attribute_methods.rb:383
m: 3,760,076 | c: 48,627 | /Users/joerafaniello/Code/manageiq/gems/pending/VMwareWebService/VimService.rb:1230
m: 3,277,903 | c: 7,173 | /Users/joerafaniello/.gem/ruby/2.2.3/gems/activesupport-4.2.4/lib/active_support/hash_with_indifferent_access.rb:84
m: 2,949,318 | c: 4,797 | /Users/joerafaniello/.gem/ruby/2.2.3/gems/activesupport-4.2.4/lib/active_support/dependencies.rb:457
m: 2,642,464 | c: 2,258 | /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/result.rb:116
m: 1,978,892 | c: 9,386 | /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/core.rb:547
m: 1,954,650 | c: 37,971 | /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/connection_adapters/postgresql/database_statements.rb:168
m: 1,911,288 | c: 17,858 | /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/associations.rb:162
m: 1,876,232 | c: 6,501 | /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/relation.rb:34
m: 1,851,414 | c: 1,049 | /Users/joerafaniello/.gem/ruby/2.2.3/gems/activesupport-4.2.4/lib/active_support/core_ext/hash/keys.rb:10
m: 1,823,055 | c: 39,972 | /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/type/string.rb:35
m: 1,804,911 | c: 7,845 | /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/relation.rb:23
m: 1,735,666 | c: 9,387 | /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/core.rb:554
m: 1,719,840 | c: 42,996 | /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/result.rb:110
m: 1,645,782 | c: 7,126 | /Users/joerafaniello/.gem/ruby/2.2.3/gems/activemodel-4.2.4/lib/active_model/dirty.rb:199
m: 1,599,878 | c: 38,752 | /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/type/string.rb:17
m: 1,531,698 | c: 37,591 | /Users/joerafaniello/.gem/ruby/2.2.3/gems/activesupport-4.2.4/lib/active_support/hash_with_indifferent_access.rb:273
m: 1,425,873 | c: 34,828 | /Users/joerafaniello/.gem/ruby/2.2.3/gems/activesupport-4.2.4/lib/active_support/core_ext/hash/keys.rb:12
m: 1,418,729 | c: 7,128 | /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/inheritance.rb:61
m: 1,291,504 | c: 4,530 | /Users/joerafaniello/.gem/ruby/2.2.3/gems/activesupport-4.2.4/lib/active_support/core_ext/hash/keys.rb:142
m: 1,171,581 | c: 15,095 | /Users/joerafaniello/Code/manageiq/gems/pending/VMwareWebService/VimService.rb:1214
m: 1,157,904 | c: 13,158 | /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/associations/alias_tracker.rb:63
m: 106,980,163 | c: 560,279 | :
m: 6,088,196 | c: 151,819 | /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/attribute_set/builder.rb:79
m: 7,022,886 | c: 97,467 | /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/attribute.rb:9
m: 6,829,222 | c: 94,756 | /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/attribute.rb:5
m: 3,760,076 | c: 48,627 | /Users/joerafaniello/Code/manageiq/gems/pending/VMwareWebService/VimService.rb:1230
m: 7,042,115 | c: 46,558 | /Users/joerafaniello/Code/manageiq/gems/pending/VMwareWebService/VimService.rb:1197
m: 1,719,840 | c: 42,996 | /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/result.rb:110
m: 1,823,055 | c: 39,972 | /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/type/string.rb:35
m: 1,599,878 | c: 38,752 | /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/type/string.rb:17
m: 1,954,650 | c: 37,971 | /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/connection_adapters/postgresql/database_statements.rb:168
m: 1,531,698 | c: 37,591 | /Users/joerafaniello/.gem/ruby/2.2.3/gems/activesupport-4.2.4/lib/active_support/hash_with_indifferent_access.rb:273
m: 1,425,873 | c: 34,828 | /Users/joerafaniello/.gem/ruby/2.2.3/gems/activesupport-4.2.4/lib/active_support/core_ext/hash/keys.rb:12
m: 797,482 | c: 19,310 | /Users/joerafaniello/.gem/ruby/2.2.3/gems/arel-6.0.3/lib/arel/table.rb:100
m: 1,911,288 | c: 17,858 | /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/associations.rb:162
m: 616,360 | c: 15,409 | /Users/joerafaniello/.gem/ruby/2.2.3/gems/arel-6.0.3/lib/arel/predications.rb:16
m: 655,243 | c: 15,146 | /Users/joerafaniello/.gem/ruby/2.2.3/gems/psych-2.0.15/lib/psych.rb:376
m: 1,171,581 | c: 15,095 | /Users/joerafaniello/Code/manageiq/gems/pending/VMwareWebService/VimService.rb:1214
m: 617,561 | c: 14,830 | /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/connection_adapters/abstract_adapter.rb:269
m: 567,480 | c: 14,187 | /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/associations/association_scope.rb:15
m: 528,840 | c: 13,221 | /Users/joerafaniello/.gem/ruby/2.2.3/gems/arel-6.0.3/lib/arel/table.rb:18
m: 1,157,904 | c: 13,158 | /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/associations/alias_tracker.rb:63
m: 385,734 | c: 9,489 | /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/core.rb:518
m: 1,735,666 | c: 9,387 | /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/core.rb:554
m: 1,978,892 | c: 9,386 | /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/core.rb:547
m: 377,289 | c: 9,386 | /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/core.rb:546
m: 364,443 | c: 9,033 | /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/attribute_methods/dirty.rb:169
m: 3,904,176 | c: 8,981 | /Users/joerafaniello/.gem/ruby/2.2.3/gems/activemodel-4.2.4/lib/active_model/attribute_methods.rb:383
m: 367,256 | c: 8,191 | /Users/joerafaniello/.gem/ruby/2.2.3/gems/activemodel-4.2.4/lib/active_model/validations.rb:300
m: 12,360,518 | c: 8,129 | /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/autosave_association.rb:152
m: 326,636 | c: 8,129 | /Users/joerafaniello/.gem/ruby/2.2.3/gems/activemodel-4.2.4/lib/active_model/errors.rb:73
m: 315,316 | c: 7,846 | /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/relation.rb:27
m: 689,928 | c: 7,845 | /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/relation/delegation.rb:106
m: 1,804,911 | c: 7,845 | /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/
m: 53,102,088 | c: 44,973 | RubyVM::InstructionSequence :
m: 22,327,513 | c: 339,641 | String :
m: 12,356,984 | c: 8,075 | Hash /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/autosave_association.rb:152
m: 10,416,904 | c: 7,103 | Hash /Users/joerafaniello/.gem/ruby/2.2.3/gems/activesupport-4.2.4/lib/active_support/core_ext/hash/transform_values.rb:9
m: 10,388,272 | c: 7,078 | Hash /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/attribute_methods/dirty.rb:165
m: 7,056,936 | c: 26,639 | Hash :
m: 6,941,960 | c: 96,416 | ActiveRecord::Attribute::FromUser /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/attribute.rb:9
m: 6,894,232 | c: 87,101 | Array :
m: 6,724,368 | c: 93,394 | ActiveRecord::Attribute::FromDatabase /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/attribute.rb:5
m: 6,069,748 | c: 151,601 | String /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/attribute_set/builder.rb:79
m: 5,104,000 | c: 22,000 | VimString /Users/joerafaniello/Code/manageiq/gems/pending/VMwareWebService/VimService.rb:1197
m: 5,076,664 | c: 4,045 | Class :
m: 3,778,320 | c: 6,470 | RubyVM::InstructionSequence /Users/joerafaniello/.gem/ruby/2.2.3/gems/activemodel-4.2.4/lib/active_model/attribute_methods.rb:383
m: 3,619,497 | c: 50,091 | String /Users/joerafaniello/Code/manageiq/gems/pending/VMwareWebService/VimService.rb:1230
m: 3,270,424 | c: 7,075 | ActiveSupport::HashWithIndifferentAccess /Users/joerafaniello/.gem/ruby/2.2.3/gems/activesupport-4.2.4/lib/active_support/hash_with_indifferent_access.rb:84
m: 3,139,017 | c: 5,042 | Regexp :
m: 2,750,376 | c: 1,576 | RubyVM::InstructionSequence /Users/joerafaniello/.gem/ruby/2.2.3/gems/activesupport-4.2.4/lib/active_support/dependencies.rb:457
m: 2,642,464 | c: 2,258 | Hash /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/result.rb:116
m: 2,172,112 | c: 16,383 | RubyVM::Env :
m: 2,056,216 | c: 1,559 | Module :
m: 1,981,814 | c: 38,301 | String /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/connection_adapters/postgresql/database_statements.rb:168
m: 1,974,816 | c: 9,336 | Hash /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/core.rb:547
m: 1,876,232 | c: 6,501 | Hash /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/relation.rb:34
m: 1,848,000 | c: 1,000 | Hash /Users/joerafaniello/.gem/ruby/2.2.3/gems/activesupport-4.2.4/lib/active_support/core_ext/hash/keys.rb:10
m: 1,804,339 | c: 39,767 | String /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/type/string.rb:35
m: 1,801,568 | c: 7,796 | Hash /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/relation.rb:23
m: 1,799,656 | c: 24,739 | String /Users/joerafaniello/Code/manageiq/gems/pending/VMwareWebService/VimService.rb:1197
m: 1,754,168 | c: 16,867 | Proc :
m: 1,731,608 | c: 9,335 | Hash /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/core.rb:554
m: 1,719,840 | c: 42,996 | String /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/result.rb:110
m: 1,641,400 | c: 7,075 | ActiveSupport::HashWithIndifferentAccess /Users/joerafaniello/.gem/ruby/2.2.3/gems/activemodel-4.2.4/lib/active_model/dirty.rb:199
m: 1,549,938 | c: 38,118 | String /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/type/string.rb:17
m: 1,476,640 | c: 36,916 | Array /Users/joerafaniello/.gem/ruby/2.2.3/gems/activesupport-4.2.4/lib/active_support/hash_with_indifferent_access.rb:273
m: 1,389,954 | c: 34,413 | String /Users/joerafaniello/.gem/ruby/2.2.3/gems/activesupport-4.2.4/lib/active_support/core_ext/hash/keys.rb:12
m: 1,291,504 | c: 4,530 | Hash /Users/joerafaniello/.gem/ruby/2.2.3/gems/activesupport-4.2.4/
m: 22,327,513 | c: 339,641 | String :
m: 6,069,748 | c: 151,601 | String /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/attribute_set/builder.rb:79
m: 6,941,960 | c: 96,416 | ActiveRecord::Attribute::FromUser /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/attribute.rb:9
m: 6,724,368 | c: 93,394 | ActiveRecord::Attribute::FromDatabase /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/attribute.rb:5
m: 6,894,232 | c: 87,101 | Array :
m: 3,619,497 | c: 50,091 | String /Users/joerafaniello/Code/manageiq/gems/pending/VMwareWebService/VimService.rb:1230
m: 53,102,088 | c: 44,973 | RubyVM::InstructionSequence :
m: 1,719,840 | c: 42,996 | String /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/result.rb:110
m: 1,804,339 | c: 39,767 | String /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/type/string.rb:35
m: 1,981,814 | c: 38,301 | String /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/connection_adapters/postgresql/database_statements.rb:168
m: 1,549,938 | c: 38,118 | String /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/type/string.rb:17
m: 1,476,640 | c: 36,916 | Array /Users/joerafaniello/.gem/ruby/2.2.3/gems/activesupport-4.2.4/lib/active_support/hash_with_indifferent_access.rb:273
m: 1,389,954 | c: 34,413 | String /Users/joerafaniello/.gem/ruby/2.2.3/gems/activesupport-4.2.4/lib/active_support/core_ext/hash/keys.rb:12
m: 7,056,936 | c: 26,639 | Hash :
m: 1,799,656 | c: 24,739 | String /Users/joerafaniello/Code/manageiq/gems/pending/VMwareWebService/VimService.rb:1197
m: 5,104,000 | c: 22,000 | VimString /Users/joerafaniello/Code/manageiq/gems/pending/VMwareWebService/VimService.rb:1197
m: 744,400 | c: 18,610 | Arel::Attributes::Attribute /Users/joerafaniello/.gem/ruby/2.2.3/gems/arel-6.0.3/lib/arel/table.rb:100
m: 1,754,168 | c: 16,867 | Proc :
m: 2,172,112 | c: 16,383 | RubyVM::Env :
m: 616,360 | c: 15,409 | Arel::Nodes::Equality /Users/joerafaniello/.gem/ruby/2.2.3/gems/arel-6.0.3/lib/arel/predications.rb:16
m: 1,105,826 | c: 15,406 | String /Users/joerafaniello/Code/manageiq/gems/pending/VMwareWebService/VimService.rb:1214
m: 608,600 | c: 15,215 | ActionDispatch::Journey::Nodes::Cat :
m: 645,239 | c: 15,022 | String /Users/joerafaniello/.gem/ruby/2.2.3/gems/psych-2.0.15/lib/psych.rb:376
m: 568,360 | c: 14,209 | Arel::Nodes::BindParam /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/connection_adapters/abstract_adapter.rb:269
m: 567,520 | c: 14,188 | Array /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/associations/association_scope.rb:15
m: 528,840 | c: 13,221 | Array /Users/joerafaniello/.gem/ruby/2.2.3/gems/arel-6.0.3/lib/arel/table.rb:18
m: 1,157,904 | c: 13,158 | Arel::Table /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/associations/alias_tracker.rb:63
m: 373,864 | c: 9,337 | Hash /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/core.rb:546
m: 1,974,816 | c: 9,336 | Hash /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/core.rb:547
m: 1,731,608 | c: 9,335 | Hash /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/core.rb:554
m: 373,320 | c: 9,333 | Array /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/core.rb:518
m: 361,107 | c: 8,970 | String /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/attribute_methods/dirty.rb:169
m: 323,000 | c: 8,075 | ActiveModel::Errors /Users/joerafaniello/.gem/ruby/2.2.3/gems/activemodel-4.2.4/lib/active_model/validations.rb:300
m: 323,000 | c: 8,075 | Hash /Users/joerafaniello/.gem/ruby/2.2.3/gems/activemodel-4.2.4/lib/active_model/errors.rb:73
m: 12,356,984 | c: 8,075 | Hash /Users/joerafaniello/.gem/ruby/2.2.3/gems/activerecord-4.2.4/lib/active_record/autosave_association.rb:152
def log_object_space
require "objspace"
ObjectSpace.trace_object_allocations_start
yield
GC.start
ObjectSpace.trace_object_allocations_stop
object_hash = {}
ObjectSpace.each_object ...
end
#setup stuff
log_object_space { EmsRefresh.refresh(e) }