[DMARC FAILURE] Re: Compiler threads

Doerr, Martin martin.doerr at sap.com
Mon Oct 14 15:06:51 UTC 2019


By specifying CICompilerCount you’ll get the following upper limits for C1 and C2:

int count = CICompilerCount;
    set_c1_count(MAX2(count / 3, 1));
    set_c2_count(MAX2(count - c1_count(), 1));

With CICompilerCount = 7:
Up to 2 C1, 5 C2 threads.


From: Stefan Reich <stefan.reich.maker.of.eye at googlemail.com>
Sent: Montag, 14. Oktober 2019 16:54
To: Doerr, Martin <martin.doerr at sap.com>
Cc: volker.simonis at gmail.com; hotspot-dev Source Developers <hotspot-dev at openjdk.java.net>
Subject: Re: [DMARC FAILURE] Re: Compiler threads

Yeah i think I see the point. Is it calculated without a constant factor? Just round up the result?

On Mon, Oct 14, 2019, 15:36 Doerr, Martin <martin.doerr at sap.com<mailto:martin.doerr at sap.com>> wrote:
Hi Stefan,

> log(N CPUs) * log(log(N CPUs) << that's pretty amazing though
This formula is from a time before UseDynamicNumberOfCompilerThreads was introduced.
I guess people usually don't want to spend all their hardware threads for JIT compilation,
but it may be beneficial to use a higher value depending on your scenario.
With UseDynamicNumberOfCompilerThreads, CICompilerCount sets the upper limit. The JVM will dynamically add and remove threads between 1 per type and 1/3 for C1 2/3 for C2 of this value in total.

Best regards,
Martin


> -----Original Message-----
> From: hotspot-dev <hotspot-dev-bounces at openjdk.java.net<mailto:hotspot-dev-bounces at openjdk.java.net>> On Behalf Of
> Stefan Reich
> Sent: Sonntag, 13. Oktober 2019 19:52
> To: Volker Simonis <volker.simonis at gmail.com<mailto:volker.simonis at gmail.com>>
> Cc: hotspot-dev Source Developers <hotspot-dev at openjdk.java.net<mailto:hotspot-dev at openjdk.java.net>>
> Subject: [DMARC FAILURE] Re: Compiler threads
>
> Hi Volker,
>
> OK, so it seems the answer is basically "It's complicated, but we have
> spent a lot of thought on sensible defaults"... :-)
>
> log(N CPUs) * log(log(N CPUs) << that's pretty amazing though
>
> Thanks,
> Stefan
>
> On Sun, 13 Oct 2019 at 19:48, Volker Simonis <volker.simonis at gmail.com<mailto:volker.simonis at gmail.com>>
> wrote:
>
> > Hi Stefan,
> >
> > the answer to your questions depends a little bit on the Java version
> > you are using.
> >
> > In jdk8 you can use -XX:CICompilerCount=<n> to explicitly set the
> > number of compiler threads and  "-XX:+CICompilerCountPerCPU" to
> > automatically set the number of compiler threads to "1 compiler thread
> > for log(N CPUs)". If you use tiered compilation, which is the default,
> > the "AdvancedThresholdPolicy" compilation policy will be used (can be
> > controlled with "-XX:CompilationPolicyChoice=<n>"), which
> > automatically enables "CICompilerCountPerCPU" but sets the number of
> > compiler threads to log(N CPUs) * log(log(N CPUs)).
> >
> > In general, the number of compiler threads when using tiered
> > compilation is distributed such that 1/3 of the total compiler threads
> > will be tier 1 (i.e. C1) compiler threads and 2/3 will be tier 2 (i.e.
> > C2) compiler threads.
> >
> > With jdk11 this system has been reworked and made more dynamic by
> > introducing the option "-XX:+UseDynamicNumberOfCompilerThreads"
> which
> > is active by default. It will automatically spawn new compiler
> > threads, if the compilation queues get full (see
> > https://bugs.openjdk.java.net/browse/JDK-8198756 and
> > https://bugs.openjdk.java.net/browse/JDK-8201235 for a more detailed
> > explanation of the parameter).
> >
> > Best regards,
> > Volker
> >
> > On Sun, Oct 13, 2019 at 5:06 PM Stefan Reich
> > <stefan.reich.maker.of.eye at googlemail.com<mailto:stefan.reich.maker.of.eye at googlemail.com>> wrote:
> > >
> > > Just a quick question: How many compiler threads does HotSpot use?
> Does
> > it
> > > depend on then number of Java threads running?
> > >
> > > For example: Let's say I want the fastest startup time possible for a
> > > single-thread application, so I want parallel JIT compilation on, say, 7,
> > > out of 8 cores. Is that possible?
> > >
> > > Many greetings,
> > > Stefan
> > >
> > > --
> > > Stefan Reich
> > > BotCompany.de // Java-based operating systems
> >
>
>
> --
> Stefan Reich
> BotCompany.de // Java-based operating systems


More information about the hotspot-dev mailing list