We have -XX:+PrintPLAB flag which is allow to get plab allocation statistics.
Output looks like (used -XX:+PrintGC -XX:+PrintPLAB options):
#2: [GC pause (G1 Evacuation Pause) (young) (allocated = 519344 wasted = 4486 unused = 0 used = 514858 undo_waste = 0 region_end_waste = 0 regions filled = 2 direct_allocated = 4944 failure_used = 0 failure_waste = 0) (plab_sz = 102971 desired_plab_sz = 65536)
(allocated = 3305338 wasted = 25813 unused = 806 used = 3278719 undo_waste = 0 region_end_waste = 0 regions filled = 8 direct_allocated = 66 failure_used = 0 failure_waste = 0) (plab_sz = 655743 desired_plab_sz = 65536)
53M->53M(376M), 0,1360649 secs]
#3: [GC pause (G1 Evacuation Pause) (young) (allocated = 262144 wasted = 224 unused = 0 used = 261920 undo_waste = 0 region_end_waste = 0 regions filled = 3 direct_allocated = 0 failure_used = 0 failure_waste = 0) (plab_sz = 52384 desired_plab_sz = 60993)
(allocated = 939085 wasted = 446 unused = 28700 used = 909939 undo_waste = 0 region_end_waste = 0 regions filled = 16 direct_allocated = 3123 failure_used = 0 failure_waste = 0) (plab_sz = 181987 desired_plab_sz = 65536)
79M->79M(599M), 0,1408361 secs]
Each GC event has young and old PLAB statistics.
In case if we use only -XX:+PrintPLAB, output looks like:
(allocated = 258154 wasted = 2187 unused = 0 used = 255967 undo_waste = 0 region_end_waste = 0 regions filled = 7 direct_allocated = 3990 failure_used = 0 failure_waste = 0) (plab_sz = 51193 desired_plab_sz = 38394)
(allocated = 1058480 wasted = 8538 unused = 905 used = 1049037 undo_waste = 0 region_end_waste = 0 regions filled = 43 direct_allocated = 9962 failure_used = 0 failure_waste = 0) (plab_sz = 209807 desired_plab_sz = 65536)
(allocated = 912780 wasted = 7571 unused = 0 used = 905209 undo_waste = 0 region_end_waste = 0 regions filled = 2 direct_allocated = 4724 failure_used = 0 failure_waste = 0) (plab_sz = 181041 desired_plab_sz = 65536)
(allocated = 5554141 wasted = 43337 unused = 1083 used = 5509721 undo_waste = 0 region_end_waste = 0 regions filled = 11 direct_allocated = 123 failure_used = 0 failure_waste = 0) (plab_sz = 1101944 desired_plab_sz = 65536)
There young and old stats are interleaved.
It would be good to point which PLAB statistics is printed - for young or for old gen.
Output looks like (used -XX:+PrintGC -XX:+PrintPLAB options):
#2: [GC pause (G1 Evacuation Pause) (young) (allocated = 519344 wasted = 4486 unused = 0 used = 514858 undo_waste = 0 region_end_waste = 0 regions filled = 2 direct_allocated = 4944 failure_used = 0 failure_waste = 0) (plab_sz = 102971 desired_plab_sz = 65536)
(allocated = 3305338 wasted = 25813 unused = 806 used = 3278719 undo_waste = 0 region_end_waste = 0 regions filled = 8 direct_allocated = 66 failure_used = 0 failure_waste = 0) (plab_sz = 655743 desired_plab_sz = 65536)
53M->53M(376M), 0,1360649 secs]
#3: [GC pause (G1 Evacuation Pause) (young) (allocated = 262144 wasted = 224 unused = 0 used = 261920 undo_waste = 0 region_end_waste = 0 regions filled = 3 direct_allocated = 0 failure_used = 0 failure_waste = 0) (plab_sz = 52384 desired_plab_sz = 60993)
(allocated = 939085 wasted = 446 unused = 28700 used = 909939 undo_waste = 0 region_end_waste = 0 regions filled = 16 direct_allocated = 3123 failure_used = 0 failure_waste = 0) (plab_sz = 181987 desired_plab_sz = 65536)
79M->79M(599M), 0,1408361 secs]
Each GC event has young and old PLAB statistics.
In case if we use only -XX:+PrintPLAB, output looks like:
(allocated = 258154 wasted = 2187 unused = 0 used = 255967 undo_waste = 0 region_end_waste = 0 regions filled = 7 direct_allocated = 3990 failure_used = 0 failure_waste = 0) (plab_sz = 51193 desired_plab_sz = 38394)
(allocated = 1058480 wasted = 8538 unused = 905 used = 1049037 undo_waste = 0 region_end_waste = 0 regions filled = 43 direct_allocated = 9962 failure_used = 0 failure_waste = 0) (plab_sz = 209807 desired_plab_sz = 65536)
(allocated = 912780 wasted = 7571 unused = 0 used = 905209 undo_waste = 0 region_end_waste = 0 regions filled = 2 direct_allocated = 4724 failure_used = 0 failure_waste = 0) (plab_sz = 181041 desired_plab_sz = 65536)
(allocated = 5554141 wasted = 43337 unused = 1083 used = 5509721 undo_waste = 0 region_end_waste = 0 regions filled = 11 direct_allocated = 123 failure_used = 0 failure_waste = 0) (plab_sz = 1101944 desired_plab_sz = 65536)
There young and old stats are interleaved.
It would be good to point which PLAB statistics is printed - for young or for old gen.
- blocks
-
JDK-8148376 Test for PLAB behavior at evacuation failure.
-
- Resolved
-
- relates to
-
JDK-8151045 Remove code duplication in PLABStats/G1EvacStats::adjust_desired_plab_sz
-
- Resolved
-
-
JDK-8030849 Investigate high fragmentation/waste in some situations during allocation during GC in G1
-
- Open
-