RFR: JDK-8290870: NMT: Increase MallocSiteTable size and allocate it only when needed

Thomas Stuefe stuefe at openjdk.org
Fri Jul 22 18:52:28 UTC 2022


MST size is too small. It was created with a very strict footprint limit, since it needed to be created statically and unconditionally.

However, [JDK-8256844](https://bugs.openjdk.org/browse/JDK-8256844) reworked NMT initialization and now we can move MST initialization to after argument parsing. Since it is only needed with -XX:NativeMemoryTracking=detail, it makes sense to only conditionally allocate it.

And therefore we can afford to make it larger.

At the moment, it is 511 entries wide. A typical VM run (release VM, reasonably complex scenario) comes to ~3000-6000 entries. Atm the median bucket chain length is 6-8, which is a lot.

Increasing table size to ~4000 drops median bucket chain length to 1, which is nice.

Example, spring petclinic boot up:

before:

Bucket chain length distribution:
unused: 1
longest: 14
median: 7


with table size 4099:

Bucket chain length distribution:
unused: 1751
longest: 5
median: 1

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

Commit messages:
 - make table bigger

Changes: https://git.openjdk.org/jdk/pull/9613/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=9613&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8290870
  Stats: 16 lines in 2 files changed: 6 ins; 7 del; 3 mod
  Patch: https://git.openjdk.org/jdk/pull/9613.diff
  Fetch: git fetch https://git.openjdk.org/jdk pull/9613/head:pull/9613

PR: https://git.openjdk.org/jdk/pull/9613


More information about the hotspot-runtime-dev mailing list