RFR: JDK-8202384: Introduce altserver jvm variant with speculative execution disabled
david.holmes at oracle.com
Wed Jun 6 04:17:49 UTC 2018
Hi Erik, Jesper,
On 6/06/2018 2:59 AM, jesper.wilhelmsson at oracle.com wrote:
>> On 5 Jun 2018, at 08:10, David Holmes <david.holmes at oracle.com> wrote:
>> Sorry to be late to this party ...
>> On 5/06/2018 6:10 AM, Erik Joelsson wrote:
>>> New webrev: http://cr.openjdk.java.net/~erikj/8202384/webrev.02/
>>> Renamed the new jvm variant to "hardened".
>> As it is a hardened server build I'd prefer if that were somehow reflected in the name. Though really I don't see why this should be restricted this way ... to be honest I don't see hardened as a variant of server vs. client vs. zero etc at all, you should be able to harden any of those.
>> So IIUC with this change we will:
>> - always build JDK native code "hardened" (if toolchain supports it)
>> - only build hotspot "hardened" if requested; and in that case
>> - jvm.cfg will list -server and -hardened with server as default
>> Is that right? I can see that we may choose to always build Oracle JDK this way but it isn't clear to me that its suitable for OpenJDK. Nor why hotspot is selectable but JDK is not. ??
> Sorry for the lack of information here. There has been a lot of off-list discussions behind this change, I've added the background to the bug now.
> The short version is that we see a ~25% regression in startup times if the JVM is compiled with the gcc flags to avoid speculative execution. We have not observed any performance regressions due to compiling the rest of the native libraries with these gcc flags, so there doesn't seem to be any reason to have different versions of other libraries.
So "benevolent dictatorship"? ;-)
My main concern is that the updated toolchains that support this have
all been produced in a mad rush and quite frankly I expect them to be
buggy. I don't think it is hard to enable the builder of OpenJDK to have
full choice and control here.
>>> On 2018-06-04 09:54, jesper.wilhelmsson at oracle.com wrote:
>>>>> On 4 Jun 2018, at 17:52, Erik Joelsson <erik.joelsson at oracle.com> wrote:
>>>>> On 2018-06-01 14:00, Aleksey Shipilev wrote:
>>>>>> On 06/01/2018 10:53 PM, Erik Joelsson wrote:
>>>>>>> This patch defines flags for disabling speculative execution for GCC and Visual Studio and applies
>>>>>>> them to all binaries except libjvm when available in the compiler. It defines a new jvm feature
>>>>>>> no-speculative-cti, which is used to control whether to use the flags for libjvm. It also defines a
>>>>>>> new jvm variant "altserver" which is the same as server, but with this new feature added.
>>>>>> I think the classic name for such product configuration is "hardened", no?
>>>>> I don't know. I'm open to suggestions on naming.
>>>> "hardened" sounds good to me.
>>>> The change looks good as well.
More information about the hotspot-dev