> ### Summary > > The new implementation of ObjectCountAfterGC for Shenandoah piggybacks off of > the existing marking phases and records strongly marked objects in a > histogram. If the event is disabled, the original marking closures are used. > When enabled new mark-and-count closures are used by the worker threads. Each > worker thread updates its local histogram as it marks an object. These local > histograms are merged at the conclusion of the marking phase under a mutex. > The event is emitted outside a safepoint. Because (most) Shenandoah's marking > is done concurrently, so is the object counting work. > > ### Performance > The performance test were ran using the Extremem benchmark on a default and > stress workload. (will edit this section to include data after average time > and test for GenShen) > > #### Default workload: > ObjectCountAfterGC disabled (master branch): > `[807.216s][info][gc,stats ] Pause Init Mark (G) = 0.003 s > (a = 264 us)` > `[807.216s][info][gc,stats ] Pause Init Mark (N) = 0.001 s > (a = 91 us)` > `[807.216s][info][gc,stats ] Concurrent Mark Roots = 0.041 s > (a = 4099 us)` > `[807.216s][info][gc,stats ] Concurrent Marking = 1.660 s > (a = 166035 us)` > `[807.216s][info][gc,stats ] Pause Final Mark (G) = 0.004 s > (a = 446 us) ` > `[807.216s][info][gc,stats ] Pause Final Mark (G) = 0.004 s > (a = 446 us) ` > `[807.216s][info][gc,stats ] Pause Final Mark (N) = 0.004 s > (a = 357 us)` > > ObjectCountAfterGC disabled (feature branch): > `[807.104s][info][gc,stats ] Pause Init Mark (G) = 0.003 s > (a = 302 us)` > `[807.104s][info][gc,stats ] Pause Init Mark (N) = 0.001 s > (a = 92 us) ` > `[807.104s][info][gc,stats ] Concurrent Mark Roots = 0.048 s > (a = 4827 us)` > `[807.104s][info][gc,stats ] Concurrent Marking = 1.666 s > (a = 166638 us) ` > `[807.104s][info][gc,stats ] Pause Final Mark (G) = 0.006 s > (a = 603 us)` > `[807.104s][info][gc,stats ] Pause Final Mark (N) = 0.005 s > (a = 516 us)` > > ObjectCountAfterGC enabled (feature branch) > `[807.299s][info][gc,stats ] Pause Init Mark (G) = 0.002 s > (a = 227 us)` > `[807.299s][info][gc,stats ] Pause Init Mark (N) = 0.001 s > (a = 89 us) ` > `[807.299s][info][gc,stats ] Concurrent Mark Roots = 0.053 s > (a = 5279 us)` > `[807.299s][info][gc,st...
pf0n has updated the pull request incrementally with one additional commit since the last revision: Whitespace ------------- Changes: - all: https://git.openjdk.org/jdk/pull/26977/files - new: https://git.openjdk.org/jdk/pull/26977/files/4295fed1..c7abbbf0 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=26977&range=03 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=26977&range=02-03 Stats: 6 lines in 1 file changed: 0 ins; 6 del; 0 mod Patch: https://git.openjdk.org/jdk/pull/26977.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26977/head:pull/26977 PR: https://git.openjdk.org/jdk/pull/26977
