RFR: 8268398: 15% increase in JFR footprint in Noop-Base

Jaroslav Bachorik jbachorik at openjdk.org
Fri Jun 17 11:58:56 UTC 2022


On Thu, 16 Jun 2022 21:41:44 GMT, Erik Gahlin <egahlin at openjdk.org> wrote:

> Hi,
> 
> Could I have a review of a PR that skips bytecode instrumentation for container events and initialisation of Container.metrics() if the JVM isn't running in a container, or to be precise, if container support is not available. If a user specifies -XX:-UseContainerSupport, events are not emitted. This was the case before this PR, and maybe it should be fixed, but it's an enhancement and outside the scope of this bug.
> 
> Testing:
> - jdk/jdk/jfr
> - Manual testing in a container.
> 
> I tried to run test/hotspot/jtreg/containers/docker/TestJFREvents.java, but the test is broken (image can't be built, so test is skipped). 
> 
> This fix may not be sufficient to reduce footprint introduced by the container events, but [JDK-8282420: JFR: Remove event handlers](https://bugs.openjdk.org/browse/JDK-8282420) also reduced number of loaded classes which should reduce footprint in JDK 19. There are an ongoing enhancement work to generate bytecode and metadata at build time, which will help, but it will be integrated in JDK 20. 
> 
> Thanks
> Erik

src/jdk.jfr/share/classes/jdk/jfr/internal/MetadataRepository.java line 221:

> 219:         PlatformEventType pe = configuration.getPlatformEventType();
> 220:         pe.setRegistered(true);
> 221:         if (jvm.isInstrumented(eventClass) || !Utils.shouldInstrument(pe.isJDK(), pe.getName())) {

This will call `setInstrumented()` even for events which are not really instrumented when they are not required to be instrumented, correct?

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

PR: https://git.openjdk.org/jdk19/pull/31


More information about the hotspot-jfr-dev mailing list