-
Enhancement
-
Resolution: Fixed
-
P4
-
8-shenandoah, 11-shenandoah, 14, 15
-
b26
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8247380 | 14u-cpu | Aleksey Shipilev | P4 | Resolved | Fixed | master |
JDK-8246552 | 14.0.2 | Aleksey Shipilev | P4 | Resolved | Fixed | b10 |
Currently we walk the roots in rather adhoc order. It runs into weird conundrums. For example, if we are running a very paralellisable root step that takes 100ms total in 10 threads, and then run a serial root step that takes 10ms, the total time depends on the processing order.
Case A. All threads enter parallel phase: 100ms/10 = 10ms each, then one thread claims a serial phase, taking 10ms. Critical path is 20ms.
Case B. One thread claims a serial phase, taking 10ms. The rest 9 threads run for 100ms/9 = 11ms each (actually even less, because first thread joins later). Critical path is <11ms.
So, we want to run serial things first, and highly-parallel heavy-weight things last.
Candidate: http://cr.openjdk.java.net/~shade/8246100/webrev.01/
Case A. All threads enter parallel phase: 100ms/10 = 10ms each, then one thread claims a serial phase, taking 10ms. Critical path is 20ms.
Case B. One thread claims a serial phase, taking 10ms. The rest 9 threads run for 100ms/9 = 11ms each (actually even less, because first thread joins later). Critical path is <11ms.
So, we want to run serial things first, and highly-parallel heavy-weight things last.
Candidate: http://cr.openjdk.java.net/~shade/8246100/webrev.01/
- backported by
-
JDK-8246552 Shenandoah: walk roots in more efficient order
- Resolved
-
JDK-8247380 Shenandoah: walk roots in more efficient order
- Resolved
- relates to
-
JDK-8246433 Shenandoah: walk roots in more efficient order in ShenandoahRootUpdater
- Resolved
-
JDK-8246097 Shenandoah: limit parallelism in CLDG root handling
- Resolved