Details
-
Enhancement
-
Status: Resolved
-
P4
-
Resolution: Fixed
-
19
-
b07
Description
G1 full gc marking currently does not preferentially move overflow stack contents to make work available to other threads.
I.e. if there is a single thread having work in its overflow stack, it tries to work on that one by itself; other threads that steal that have nothing to do as the stack to steal from is kind of empty.
On BRT 20gb, in the initial full gcs to compact the heap, changing this saves 400ms of 1500ms total pause time.
This is a similar problem G1 young gc showed long time ago.
I.e. if there is a single thread having work in its overflow stack, it tries to work on that one by itself; other threads that steal that have nothing to do as the stack to steal from is kind of empty.
On BRT 20gb, in the initial full gcs to compact the heap, changing this saves 400ms of 1500ms total pause time.
This is a similar problem G1 young gc showed long time ago.
Attachments
Issue Links
- relates to
-
JDK-8156754 Encapsulate task queue policies into queue/task specific classes to use
-
- Open
-
-
JDK-8152438 Threads may do significant work out of the non-shared overflow buffer
-
- Resolved
-
-
JDK-8280958 G1/Parallel: Unify marking code structure
-
- Resolved
-
-
JDK-8280705 Parallel: Full gc mark stack draining should prefer to make work available to other threads
-
- Resolved
-
(1 links to)