[10] RFR(S): 8185572: Enable AssumeMP by default on SPARC machines
Poonam Parhar
poonam.bajaj at oracle.com
Thu Aug 10 17:44:09 UTC 2017
Thanks Vladimir.
Since the SPARC machines are always multi-cores, we can safely set AssumeMP to true on these.
Adding my comments from the previous mail here again for better readability:
-------------------------------------
Bug: https://bugs.openjdk.java.net/browse/JDK-8185572: Enable AssumeMP by default on SPARC machines
Webrev: http://cr.openjdk.java.net/~poonam/8185572/webrev.00/
This change enables AssumeMP by default on SPARC machines. On Sparc T7, to finalize BIS instructions the server compiler needs to add a 'membar' instruction at the end. But the generation of 'membar' is guarded by os::is_MP(), and os::is_MP() returns false when there is a single cpu available on the system. Now, in virtualized/container environments, the number of processors allocated to a virtual machine can dynamically change during the application runtime. That could lead to incorrect generation of BIS instructions and can cause JVM crashes. Enabling AssumeMP makes is_MP() always return true on SPARC systems.
In future, we may consider making generation of 'membar' unconditional with the enhancement request: https://bugs.openjdk.java.net/browse/JDK-8150715.
Thanks,
Poonam
> -----Original Message-----
> From: Vladimir Kozlov
> Sent: Thursday, August 10, 2017 9:47 AM
> To: Poonam Parhar; hotspot-compiler-dev at openjdk.java.net
> Cc: hotspot-runtime-dev at openjdk.java.net runtime
> Subject: Re: [10] RFR(S): 8185572: Enable AssumeMP by default on SPARC
> machines
>
> CCing to Runtime.
>
> Can you add comment explaining why it set to true on SPARC?
>
> Thanks,
> Vladimir
>
> On 8/10/17 6:26 AM, Poonam Parhar wrote:
> > Hello,
> >
> > Please review this simple patch:
> >
> > Bug:_JDK-8185572_<https://bugs.openjdk.java.net/browse/JDK-
> 8185572>:En
> > able
> > AssumeMP by default on SPARC machines
> >
> > Webrev:http://cr.openjdk.java.net/~poonam/8185572/webrev.00/
> >
> > This change enables AssumeMP by default on SPARC machines. On Sparc
> > T7, to finalize BIS instructions the server compiler needs toadd
> > a'membar'instruction at the end.But the generation of'membar'is
> > guarded byos::is_MP(), andos::is_MP()returns false when there isa
> > singlecpu available on the system.
> > Now,invirtualized/containerenvironments, the number
> > ofprocessorsallocated to a virtual machine can dynamically change
> > during the application runtime.That could lead to incorrect
> generation
> > of BIS instructions and can cause JVM crashes.Enabling AssumeMP makes
> > is_MP() always return true on SPARC systems.
> >
> > In future, we may consider makinggeneration of'membar'unconditional
> > withtheenhancementrequest:_JDK-
> 8150715_<https://bugs.openjdk.java.net/browse/JDK-8150715>.
> >
> > Thanks,
> >
> > Poonam
> >
More information about the hotspot-compiler-dev
mailing list