-
Enhancement
-
Resolution: Fixed
-
P4
-
9
-
b07
The reason is that enqueuing completed buffers takes a global lock (basically ending up in PtrQueue::handle_zero_index() and PtrQueueSet::enqueue_complete_buffer(); there is also some strange locking/unlocking going on in PtrQueue::locking_enqueue_completed_buffer()).
That does not scale beyond a few threads.
The problem is harder than it seems because after providing a per-thread DCQS, performance does not improve a lot. The stalling is moved to the malloc() calls done when allocating new DCQ buffers.
- blocks
-
JDK-8227719 G1 Pending cards estimation too conservative in cost prediction
-
- Resolved
-
- relates to
-
JDK-8212826 Make PtrQueue free list lock-free
-
- Resolved
-
-
JDK-8230327 Make G1DirtyCardQueueSet free-id init unconditional
-
- Resolved
-
-
JDK-8230332 G1DirtyCardQueueSet _notify_when_complete is always true
-
- Resolved
-
-
JDK-8237143 Eliminate DirtyCardQ_cbl_mon
-
- Resolved
-
-
JDK-8258142 Simplify G1RedirtyCardsQueue
-
- Resolved
-
-
JDK-8209974 Eliminate shared PtrQueues
-
- Closed
-
-
JDK-8076584 G1: Parallelism used for redirty logged cards needs better control
-
- Closed
-
-
JDK-8173211 G1: Enqueuing dirty cards during reference enqueuing in phase 3 does not scale
-
- Closed
-