mmtk / mmtk-julia

Julia binding for MMTk
13 stars 10 forks source link

MMTk core PR #1094 slowdown Julia #147

Open qinsoon opened 7 months ago

qinsoon commented 7 months ago

https://github.com/mmtk/mmtk-core/pull/1094 changed the SFT map implementation to SFTDenseMap when vm_space is enabled for correctness reasons. As we know SFTDenseMap performs worse, and this change affects Julia + MMTk performance negatively. We see slowdown up to 15% in GC time for some benchmarks.

Normalized results total time gc time mutator time
('multithreaded-big_arrays-issue-52937', 'julia-mmtk-master(1.5x minheap,.mmtk_gc_threads-12)') 1 0 1
('multithreaded-big_arrays-issue-52937', 'julia-mmtk-pr(1.5x minheap,.mmtk_gc_threads-12)') 0.997136 0 0.997136
('multithreaded-big_arrays-objarray', 'julia-mmtk-master(1.5x minheap,.mmtk_gc_threads-12)') 1 1 1
('multithreaded-big_arrays-objarray', 'julia-mmtk-pr(1.5x minheap,.mmtk_gc_threads-12)') 1.01231 1.03808 1.00693
('multithreaded-binary_tree-tree_immutable', 'julia-mmtk-master(1.5x minheap,.mmtk_gc_threads-12)') 1 1 1
('multithreaded-binary_tree-tree_immutable', 'julia-mmtk-pr(1.5x minheap,.mmtk_gc_threads-12)') 1.03907 1.07512 1.00402
('multithreaded-binary_tree-tree_mutable', 'julia-mmtk-master(1.5x minheap,.mmtk_gc_threads-12)') 1 1 1
('multithreaded-binary_tree-tree_mutable', 'julia-mmtk-pr(1.5x minheap,.mmtk_gc_threads-12)') 1.04052 1.08186 1.00477
('multithreaded-mergesort_parallel-mergesort_parallel', 'julia-mmtk-master(1.5x minheap,.mmtk_gc_threads-12)') 1 0 1
('multithreaded-mergesort_parallel-mergesort_parallel', 'julia-mmtk-pr(1.5x minheap,.mmtk_gc_threads-12)') 1.00196 0 1.00196
('multithreaded-mm_divide_and_conquer-mm_divide_and_conquer', 'julia-mmtk-master(1.5x minheap,.mmtk_gc_threads-12)') 1 0 1
('multithreaded-mm_divide_and_conquer-mm_divide_and_conquer', 'julia-mmtk-pr(1.5x minheap,.mmtk_gc_threads-12)') 1.0079 0 1.0079
('serial-TimeZones-TimeZones', 'julia-mmtk-master(1.5x minheap,.mmtk_gc_threads-12)') 1 0 1
('serial-TimeZones-TimeZones', 'julia-mmtk-pr(1.5x minheap,.mmtk_gc_threads-12)') 1.04728 0 1.04728
('serial-append-append', 'julia-mmtk-master(1.5x minheap,.mmtk_gc_threads-12)') 1 1 1
('serial-append-append', 'julia-mmtk-pr(1.5x minheap,.mmtk_gc_threads-12)') 1.09984 1.12163 0.999188
('serial-big_arrays-many_refs', 'julia-mmtk-master(1.5x minheap,.mmtk_gc_threads-12)') 1 1 1
('serial-big_arrays-many_refs', 'julia-mmtk-pr(1.5x minheap,.mmtk_gc_threads-12)') 0.989741 0.990786 0.986718
('serial-big_arrays-single_ref', 'julia-mmtk-master(1.5x minheap,.mmtk_gc_threads-12)') 1 1 1
('serial-big_arrays-single_ref', 'julia-mmtk-pr(1.5x minheap,.mmtk_gc_threads-12)') 0.989843 0.989805 0.990089
('serial-bigint-pollard', 'julia-mmtk-master(1.5x minheap,.mmtk_gc_threads-12)') 1 1 1
('serial-bigint-pollard', 'julia-mmtk-pr(1.5x minheap,.mmtk_gc_threads-12)') 1.10983 1.16513 1.0113
('serial-linked-list', 'julia-mmtk-master(1.5x minheap,.mmtk_gc_threads-12)') 1 0 1
('serial-linked-list', 'julia-mmtk-pr(1.5x minheap,.mmtk_gc_threads-12)') 1.00937 0 1.00937
('serial-linked-tree', 'julia-mmtk-master(1.5x minheap,.mmtk_gc_threads-12)') 1 0 1
('serial-linked-tree', 'julia-mmtk-pr(1.5x minheap,.mmtk_gc_threads-12)') 1.00088 0 1.00088
('serial-strings-strings', 'julia-mmtk-master(1.5x minheap,.mmtk_gc_threads-12)') 1 0 1
('serial-strings-strings', 'julia-mmtk-pr(1.5x minheap,.mmtk_gc_threads-12)') 0.993816 0 0.993816
('slow-bigint-pidigits', 'julia-mmtk-master(1.5x minheap,.mmtk_gc_threads-12)') 1 1 1
('slow-bigint-pidigits', 'julia-mmtk-pr(1.5x minheap,.mmtk_gc_threads-12)') 1.14245 1.149 1.01848
('slow-rb_tree-rb_tree', 'julia-mmtk-master(1.5x minheap,.mmtk_gc_threads-12)') 1 1 1
('slow-rb_tree-rb_tree', 'julia-mmtk-pr(1.5x minheap,.mmtk_gc_threads-12)') 0.999169 0.97978 0.999665
Without normalization total time gc time mutator time
('multithreaded-big_arrays-issue-52937', 'julia-mmtk-master(1.5x minheap,.mmtk_gc_threads-12)') 105672 0 105672
('multithreaded-big_arrays-issue-52937', 'julia-mmtk-pr(1.5x minheap,.mmtk_gc_threads-12)') 105370 0 105370
('multithreaded-big_arrays-objarray', 'julia-mmtk-master(1.5x minheap,.mmtk_gc_threads-12)') 39175.8 6770 32405.8
('multithreaded-big_arrays-objarray', 'julia-mmtk-pr(1.5x minheap,.mmtk_gc_threads-12)') 39658.1 7027.8 32630.3
('multithreaded-binary_tree-tree_immutable', 'julia-mmtk-master(1.5x minheap,.mmtk_gc_threads-12)') 29514.4 14547.3 14967.1
('multithreaded-binary_tree-tree_immutable', 'julia-mmtk-pr(1.5x minheap,.mmtk_gc_threads-12)') 30667.4 15640.1 15027.3
('multithreaded-binary_tree-tree_mutable', 'julia-mmtk-master(1.5x minheap,.mmtk_gc_threads-12)') 42100.3 19521.8 22578.5
('multithreaded-binary_tree-tree_mutable', 'julia-mmtk-pr(1.5x minheap,.mmtk_gc_threads-12)') 43806 21119.8 22686.2
('multithreaded-mergesort_parallel-mergesort_parallel', 'julia-mmtk-master(1.5x minheap,.mmtk_gc_threads-12)') 18882.6 0 18882.6
('multithreaded-mergesort_parallel-mergesort_parallel', 'julia-mmtk-pr(1.5x minheap,.mmtk_gc_threads-12)') 18919.6 0 18919.6
('multithreaded-mm_divide_and_conquer-mm_divide_and_conquer', 'julia-mmtk-master(1.5x minheap,.mmtk_gc_threads-12)') 7177.4 0 7177.4
('multithreaded-mm_divide_and_conquer-mm_divide_and_conquer', 'julia-mmtk-pr(1.5x minheap,.mmtk_gc_threads-12)') 7234.1 0 7234.1
('serial-TimeZones-TimeZones', 'julia-mmtk-master(1.5x minheap,.mmtk_gc_threads-12)') 9200.7 0 9200.7
('serial-TimeZones-TimeZones', 'julia-mmtk-pr(1.5x minheap,.mmtk_gc_threads-12)') 9635.7 0 9635.7
('serial-append-append', 'julia-mmtk-master(1.5x minheap,.mmtk_gc_threads-12)') 40132.6 32991.6 7141
('serial-append-append', 'julia-mmtk-pr(1.5x minheap,.mmtk_gc_threads-12)') 44139.6 37004.4 7135.2
('serial-big_arrays-many_refs', 'julia-mmtk-master(1.5x minheap,.mmtk_gc_threads-12)') 3460.5 2572.1 888.4
('serial-big_arrays-many_refs', 'julia-mmtk-pr(1.5x minheap,.mmtk_gc_threads-12)') 3425 2548.4 876.6
('serial-big_arrays-single_ref', 'julia-mmtk-master(1.5x minheap,.mmtk_gc_threads-12)') 6449 5581.3 867.7
('serial-big_arrays-single_ref', 'julia-mmtk-pr(1.5x minheap,.mmtk_gc_threads-12)') 6383.5 5524.4 859.1
('serial-bigint-pollard', 'julia-mmtk-master(1.5x minheap,.mmtk_gc_threads-12)') 5365.6 3436.6 1929
('serial-bigint-pollard', 'julia-mmtk-pr(1.5x minheap,.mmtk_gc_threads-12)') 5954.9 4004.1 1950.8
('serial-linked-list', 'julia-mmtk-master(1.5x minheap,.mmtk_gc_threads-12)') 4281.3 0 4281.3
('serial-linked-list', 'julia-mmtk-pr(1.5x minheap,.mmtk_gc_threads-12)') 4321.4 0 4321.4
('serial-linked-tree', 'julia-mmtk-master(1.5x minheap,.mmtk_gc_threads-12)') 113775 0 113775
('serial-linked-tree', 'julia-mmtk-pr(1.5x minheap,.mmtk_gc_threads-12)') 113876 0 113876
('serial-strings-strings', 'julia-mmtk-master(1.5x minheap,.mmtk_gc_threads-12)') 39696.9 0 39696.9
('serial-strings-strings', 'julia-mmtk-pr(1.5x minheap,.mmtk_gc_threads-12)') 39451.4 0 39451.4
('slow-bigint-pidigits', 'julia-mmtk-master(1.5x minheap,.mmtk_gc_threads-12)') 6.46475e+06 6.14039e+06 324355
('slow-bigint-pidigits', 'julia-mmtk-pr(1.5x minheap,.mmtk_gc_threads-12)') 7.38565e+06 7.0553e+06 330348
('slow-rb_tree-rb_tree', 'julia-mmtk-master(1.5x minheap,.mmtk_gc_threads-12)') 1.90513e+06 47542.9 1.85759e+06
('slow-rb_tree-rb_tree', 'julia-mmtk-pr(1.5x minheap,.mmtk_gc_threads-12)') 1.90354e+06 46581.6 1.85696e+06