RFR (M): 8159422: Very high Concurrent Mark mark stack contention

Kim Barrett kim.barrett at oracle.com
Tue Sep 13 16:19:11 UTC 2016


> On Sep 13, 2016, at 6:15 AM, Thomas Schatzl <thomas.schatzl at oracle.com> wrote:
> http://cr.openjdk.java.net/~tschatzl/8159422/webrev.2_to_3/ (diff)
> http://cr.openjdk.java.net/~tschatzl/8159422/webrev.3/ (full)

------------------------------------------------------------------------------ 
src/share/vm/gc/g1/g1ConcurrentMark.cpp
 242 G1CMMarkStack::OopChunk* G1CMMarkStack::remove_chunk_from_chunk_list() {
 243   MutexLockerEx x(MarkStackChunkList_lock, Mutex::_no_safepoint_check_flag);
 244   _chunks_in_chunk_list--;
 245   return remove_chunk_from_list(&_chunk_list);
 246 }

Decrement of _chunks_in_chunk_list needs to be conditional on result
of remove_chunk_from_list, only decrementing if got a chunk.

------------------------------------------------------------------------------ 
src/share/vm/gc/g1/g1ConcurrentMark.hpp
I think some of the padding in G1CMMarkStack isn't useful with the
lock-based approach.  I'm assuming you've left it because you plan to
get back to the lock-free approach later.  Is there a CR for that?

------------------------------------------------------------------------------




More information about the hotspot-gc-dev mailing list