changeset 7218:ae374055ebce

8053998: Hot card cache flush chunk size too coarse grained Summary: Changed the chunk size to a smaller fixed number. Reviewed-by: tschatzl, mgerdin
author mlarsson
date Thu, 18 Sep 2014 11:27:59 +0200
parents c132be0fb74d
children b6a1bf5222c5
files src/share/vm/gc_implementation/g1/g1HotCardCache.cpp src/share/vm/gc_implementation/g1/g1HotCardCache.hpp
diffstat 2 files changed, 4 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/share/vm/gc_implementation/g1/g1HotCardCache.cpp	Fri Dec 19 09:21:06 2014 +0100
+++ b/src/share/vm/gc_implementation/g1/g1HotCardCache.cpp	Thu Sep 18 11:27:59 2014 +0200
@@ -43,9 +43,7 @@
     _hot_cache_idx = 0;
 
     // For refining the cards in the hot cache in parallel
-    uint n_workers = (ParallelGCThreads > 0 ?
-                        _g1h->workers()->total_workers() : 1);
-    _hot_cache_par_chunk_size = MAX2(1, _hot_cache_size / (int)n_workers);
+    _hot_cache_par_chunk_size = (int)(ParallelGCThreads > 0 ? ClaimChunkSize : _hot_cache_size);
     _hot_cache_par_claimed_idx = 0;
 
     _card_counts.initialize(card_counts_storage);
--- a/src/share/vm/gc_implementation/g1/g1HotCardCache.hpp	Fri Dec 19 09:21:06 2014 +0100
+++ b/src/share/vm/gc_implementation/g1/g1HotCardCache.hpp	Thu Sep 18 11:27:59 2014 +0200
@@ -70,6 +70,9 @@
 
   G1CardCounts _card_counts;
 
+  // The number of cached cards a thread claims when flushing the cache
+  static const int ClaimChunkSize = 32;
+
   bool default_use_cache() const {
     return (G1ConcRSLogCacheSize > 0);
   }