RFR: 7903455: JMH: Add "mempool" profiler

Eric Caspole ecaspole at openjdk.org
Fri Apr 14 15:24:16 UTC 2023


I started off to show only the code cache related size, but I don't see any reason to not print all the available mbean pool info. We often adapt app or library code to run as JMH, to use all its benefits. In those cases seeing the code cache stats is more interesting than say, for a regular JDK API JMH benchmark. I verified the CodeHeap stats match well with +PrintCodeCache. There is mbean pool data for all the GCs as well.

Example output:

Benchmark                                                              (iterations)  Mode  Cnt      Score   Error  Units
SpillCode.testSpillForManyInts                                                   10  avgt    5    705.433 ± 9.570  ns/op
SpillCode.testSpillForManyInts:·CodeHeap 'non-nmethods'.used                     10  avgt    5   1139.000             kB
SpillCode.testSpillForManyInts:·CodeHeap 'non-profiled nmethods'.used            10  avgt    5    209.750             kB
SpillCode.testSpillForManyInts:·CodeHeap 'profiled nmethods'.used                10  avgt    5    924.875             kB
SpillCode.testSpillForManyInts:·Compressed Class Space.used                      10  avgt    5    403.375             kB
SpillCode.testSpillForManyInts:·G1 Eden Space.used                               10  avgt    5   8192.000             kB
SpillCode.testSpillForManyInts:·G1 Old Gen.used                                  10  avgt    5   8160.000             kB
SpillCode.testSpillForManyInts:·G1 Survivor Space.used                           10  avgt    5        ≈ 0             kB
SpillCode.testSpillForManyInts:·Metaspace.used                                   10  avgt    5   3617.320             kB
SpillCode.testSpillForManyInts:·Total CodeHeap.used                              10  avgt    5   2267.000             kB
SpillCode.testSpillForManyInts:·Total MemPools.used                              10  avgt    5  22639.695             kB

-------------

Commit messages:
 - Add Alekseys comments/updates
 - Dont use the unicode dot as the stat prefix
 - Add a mbean based memory pool profiler

Changes: https://git.openjdk.org/jmh/pull/99/files
 Webrev: https://webrevs.openjdk.org/?repo=jmh&pr=99&range=00
  Issue: https://bugs.openjdk.org/browse/CODETOOLS-7903455
  Stats: 73 lines in 2 files changed: 73 ins; 0 del; 0 mod
  Patch: https://git.openjdk.org/jmh/pull/99.diff
  Fetch: git fetch https://git.openjdk.org/jmh.git pull/99/head:pull/99

PR: https://git.openjdk.org/jmh/pull/99


More information about the jmh-dev mailing list