GCPerfP99.java - Output Verification

This section provides tutorials to verify output from GCPerfP99.java test runs. System interrupts are successfully excluded from performance calculation.

The first test of our GCPerfP99.java is to see how it reacts to system interruptions.

Start the JVM to run the application, wait for few seconds, then start Chrome on your computer while the JVM is running.

C:\>\progra~1\java\jdk1.8.0\bin\java GCPerfP99 1024 32 32 0 1000

Parameters:
   Size=1024KB, Base=32, Chunk=32, Warmup=0, Runs=1000
Results:
   Total execution time = 79 seconds
   Total objects processed = 32000
   Average time per run = 80 milliseconds
   Throughput = 399 objects/second
   Latency = 3906 milliseconds/1000 objects
   Throughput (max, ave, min) = (695, 399, 256)
   Latency (min, ave, max) = (1438, 2506, 3906)
1% worst runs dropped:
   Run, Time, Throughput = 991, 125, 256
   Run, Time, Throughput = 992, 125, 256
   Run, Time, Throughput = 993, 126, 253
   Run, Time, Throughput = 994, 127, 251
   Run, Time, Throughput = 995, 129, 248
   Run, Time, Throughput = 996, 130, 246
   Run, Time, Throughput = 997, 156, 205
   Run, Time, Throughput = 998, 184, 173
   Run, Time, Throughput = 999, 203, 157
   Run, Time, Throughput = 1000, 215, 148
Press ENTER to end...

The output looks very good:

Run it again with highest priority and without touch the computer while it is running.

C:\>start /realtime \progra~1\java\jdk1.8.0\bin\java 
   GCPerfP99 1024 32 32 0 1000

Parameters:
   Size=1024KB, Base=32, Chunk=32, Warmup=0, Runs=1000
Results:
   Total execution time = 77 seconds
   Total objects processed = 32000
   Average time per run = 78 milliseconds
   Throughput = 406 objects/second
   Latency = 3448 milliseconds/1000 objects
   Throughput (max, ave, min) = (695, 406, 290)
   Latency (min, ave, max) = (1438, 2463, 3448)
1% worst runs dropped:
   Run, Time, Throughput = 991, 110, 290
   Run, Time, Throughput = 992, 110, 290
   Run, Time, Throughput = 993, 110, 290
   Run, Time, Throughput = 994, 110, 290
   Run, Time, Throughput = 995, 110, 290
   Run, Time, Throughput = 996, 110, 290
   Run, Time, Throughput = 997, 110, 290
   Run, Time, Throughput = 998, 110, 290
   Run, Time, Throughput = 999, 125, 256
   Run, Time, Throughput = 1000, 141, 226
Press ENTER to end...

The output matched my expectation. There were two small system interruptions by looking at the dropped runs, because it was executed with the highest priority on a quiet system.

Last update: 2018.

Table of Contents

 About This Book

 Heap Memory Area and Size Control

 JVM Garbage Collection Logging

 Introduction of Garbage Collectors

 Serial Collector - "+XX:+UseSerialGC"

 Parallel Collector - "+XX:+UseParallelGC"

 Concurrent Mark-Sweep (CMS) Collector - "+XX:+UseConcMarkSweepGC"

 Garbage First (G1) Collector - "+XX:+UseG1GC"

 Object References and Garbage Collection

Garbage Collection Performance Test Program

 GCPerformance.java - GC Performance Test Program

 GCPerformance.java - Program Output

 Performance Impact of Wait Time

 Performance Impact of Chunk Size

 Performance Jumps Not Related to GC

 Performance Test and System Interruptions

 "START /REALTIME" - Run JVM with Highest Priority

 GCPerfP99.java - 99th Percentile Performance

GCPerfP99.java - Output Verification

 Performance Tests on Serial Collector

 Performance Tests on Parallel collector

 Performance Tests on Concurrent collector

 Performance Tests on G1 collector

 Garbage Collection Performance Test Summary

 Outdated Tutorials

 References

 Full Version in PDF/EPUB