[10] RFR(S): 8185572: Enable AssumeMP by default on SPARC machines
Bob Vandette
bob.vandette at oracle.com
Thu Aug 10 18:53:30 UTC 2017
Can we just always run with AssumeMP true for all platforms these days?
Surely single CPU systems are rare now.
We might have issues with Docker containers that have a limit 1 CPU
on a large mp system which may cause issues.
Bob.
> On Aug 10, 2017, at 2:23 PM, Vladimir Kozlov <vladimir.kozlov at oracle.com> wrote:
>
> Poonam,
>
> I mean to add a small (one or two sentences) comment to the code. Some thing like next but may better wording:
>
> + if (FLAG_IS_DEFAULT(AssumeMP)) {
> + // BIS instructions require 'membar' instruction regardless number of CPU.
> + // Otherwise in virtualized/container environments which use only 1 cpu BIS instructions may produce incorrect results.
> + FLAG_SET_DEFAULT(AssumeMP, true);
>
> Thanks,
> Vladimir
>
> On 8/10/17 10:44 AM, Poonam Parhar wrote:
>> 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