RFR: 8166002: Emulate client build on platforms with reduced virtual address space
Vladimir Kozlov
vladimir.kozlov at oracle.com
Tue Jan 3 05:45:49 UTC 2017
Hi Jamsheed
Why you moved set_client_compilation_mode() to c1_globals and new class? Why not to keep it in compilerDefinitions?
selected_with_other_flags setting and code in compilation_mode_selected() have the same checks - factor them into one
function.
I would suggest to keep comment in compilationPolicy.cpp.
I reviewed CCC request.
Thanks,
Vladimir
On 1/2/17 8:25 PM, Jamsheed C m wrote:
> Hi Vladimir, Igor,
>
> i changed implementation a little bit(i.e now more close to -client behavior). Tests are modified to support this mode.
>
> http://cr.openjdk.java.net/~jcm/8166002/webrev.04/
>
>
> A new command-line option -XX:CompilationMode=<server/client> will be provided in JDK 9 to emulate a client build on
> 32-bit Windows platforms using a standard tiered build.
>
> -XX:CompilationMode=server--selects to build time compilation mode of server VM.
> -XX:CompilationMode=client--selects non-tiered c1 compiler. (Serial Garbage Collection in ON and Xshare is set to auto
> in this mode).
>
> This option is available only on Tiered build (i.e. Server VM).
> Client VM ignores this flag and continues with build time compilation mode.
>
> This option will have no effect if any of TieredCompilation, TieredStopAtLevel, UseAOT, EnableJVMCI, UseJVMCICompiler is
> specified at the command-line.
>
> Platforms except 32-bit Windows runs in server compilation mode by default. 32-bit Windows runs in client compilation
> mode by default. The user should specify -XX:CompilationMode=<server/client> to switch.
>
> -XX:+/-TieredCompilation or -XX:TieredStopAtLevel=<0-4> or -XX:+/-UseAOT or -XX:+/-EnableJVMCI or
> -XX:+/-UseJVMCICompiler always switch to build time compilation mode plus corresponding option behavior irrespective of
> CompilationMode option.
>
> I have updated the CCC request link in bug report, Please review.
>
> Best Regards,
> Jamsheed
>
> On 12/6/2016 12:22 AM, Vladimir Kozlov wrote:
>> On 12/5/16 6:21 AM, Jamsheed C m wrote:
>>> Hi Vladimir,
>>>
>>> On 12/3/2016 8:02 AM, Vladimir Kozlov wrote:
>>>> On 12/2/16 7:38 AM, Jamsheed C m wrote:
>>>>> Hi Vladimir, Igor,
>>>>>
>>>>> I made a few more changes to include the optimization that was available only on client.
>>>>>
>>>>> 1) a few c1 changes (JDK-7153771..)
>>>>
>>>> Which one?
>>> This one.
>>
>> I see.
>>
>> Thanks,
>> Vladimir
>>
>>> src/share/vm/c1/c1_Compilation.hpp
>>>
>>> // will compilation make optimistic assumptions that might lead to
>>> // deoptimization and that the runtime will account for?
>>> bool is_optimistic() const {
>>> - return !TieredCompilation &&
>>> + return is_client_compilation_mode_vm() &&
>>> (RangeCheckElimination || UseLoopInvariantCodeMotion) &&
>>> method()->method_data()->trap_count(Deoptimization::Reason_none) == 0;
>>> }
>>>
>>> src/share/vm/c1/c1_Runtime1.cpp
>>> - assert(!TieredCompilation, "incompatible with tiered compilation");
>>> + assert(is_client_compilation_mode_vm(), "incompatible in non client modes");
>>>
>>> mpegaudio was about 6% low without this.
>>>
>>>>>
>>>>> 2) Made SerialGC as default GC.
>>>>
>>>> Should be only for client_compilation_mode
>>> Ok.
>>>>
>>>>>
>>>>> 3) Set CICompileCount=1 for client compilation mode.
>>>>
>>>> I think check should be is_client_compilation_mode_vm()
>>> Ok.
>>> Best Regards,
>>> Jamsheed
>>>>
>>>>>
>>>>> 4) Tuned thresholds to get better performance.
>>>>
>>>> ok
>>>>
>>>>>
>>>>> 5) Added relevant flags in few tests, modified TestSelectDefaultGC.java.
>>>>
>>>> ok
>>>>
>>>> Thanks,
>>>> Vladimir
>>>>
>>>>>
>>>>> revised webrev: http://cr.openjdk.java.net/~jcm/8166002/webrev.03/
>>>>>
>>>>> performance report is added in bug report.
>>>>>
>>>>> Best Regards,
>>>>>
>>>>> Jamsheed
>>>>>
>>>>>
>>>>>
>>>>> On 11/1/2016 1:14 AM, Vladimir Kozlov wrote:
>>>>>> webrev.02 looks good to me too.
>>>>>>
>>>>>> Thanks,
>>>>>> Vladimri
>>>>>>
>>>>>> On 10/31/16 10:39 AM, Igor Veresov wrote:
>>>>>>> Jamsheed explained to me that ReservedCodeCacheSize is now set in the else clause (udiffs are not showing the
>>>>>>> proper alignment and I missed it). The change looks good to me.
>>>>>>>
>>>>>>> igor
>>>>>>>
>>>>>>>> On Oct 31, 2016, at 9:42 AM, Igor Veresov <igor.veresov at oracle.com> wrote:
>>>>>>>>
>>>>>>>> Assuming it gets the performance/startup numbers close to the client VM it looks fine.
>>>>>>>> But what about adjusting the code cache sizes? With tiered we get 240M ReservedCodeCacheSize, which also turns
>>>>>>>> on SegmentedCodeCache. It seems like we won’t need the “profiled” segment of the code
>>>>>>>> cache at all. It is also likely that we’d do fine with a smaller overall code cache.
>>>>>>>>
>>>>>>>> igor
>>>>>>>>
>>>>>>>>> On Oct 31, 2016, at 9:14 AM, Jamsheed C m <jamsheed.c.m at oracle.com> wrote:
>>>>>>>>>
>>>>>>>>> Hi Vladimir, Igor,
>>>>>>>>>
>>>>>>>>> revised webrev: http://cr.openjdk.java.net/~jcm/8166002/webrev.02/
>>>>>>>>>
>>>>>>>>> i took flags from bug comment.
>>>>>>>>>
>>>>>>>>> Igor V. suggested next flags setting to emulate Client VM compile threshold with TieredStopAtLevel=1:
>>>>>>>>>
>>>>>>>>> Tier3BackEdgeThreshold=14000
>>>>>>>>> Tier3CompileThreshold=1500
>>>>>>>>> Tier3InvocationThreshold=1500
>>>>>>>>> Tier3MinInvocationThreshold =1500
>>>>>>>>>
>>>>>>>>> Best Regards,
>>>>>>>>>
>>>>>>>>> Jamsheed
>>>>>>>>>
>>>>>>>>> On 10/28/2016 11:48 PM, Vladimir Kozlov wrote:
>>>>>>>>>> Add comment what the code does and why. Move the code into separate function reaturning bool. And condition
>>>>>>>>>> CodeCache setting based on result. It will reduce #ifdef mess.
>>>>>>>>>>
>>>>>>>>>> Can you put && to the end of previous line? To get good alignment.
>>>>>>>>>> Should we also change CompilationPolicyChoice?
>>>>>>>>>>
>>>>>>>>>> Ask Igor Veresov to verify settings.
>>>>>>>>>>
>>>>>>>>>> Thanks,
>>>>>>>>>> Vladimir
>>>>>>>>>>
>>>>>>>>>> On 10/28/16 10:59 AM, Jamsheed C m wrote:
>>>>>>>>>>> Hi Vladimir,
>>>>>>>>>>>
>>>>>>>>>>> revised webrev with just ergo settings for win32.
>>>>>>>>>>>
>>>>>>>>>>> http://cr.openjdk.java.net/~jcm/8166002/webrev.01/
>>>>>>>>>>>
>>>>>>>>>>> Best Regards
>>>>>>>>>>>
>>>>>>>>>>> Jamsheed
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On 10/28/2016 12:25 PM, Vladimir Kozlov wrote:
>>>>>>>>>>>> Hi Jamsheed,
>>>>>>>>>>>>
>>>>>>>>>>>> Why you need changes in tests?
>>>>>>>>>>>>
>>>>>>>>>>>> Why you can't use set_client_compilation_mode() in both places?
>>>>>>>>>>>>
>>>>>>>>>>>> Looks fine otherwise.
>>>>>>>>>>>>
>>>>>>>>>>>> Thanks,
>>>>>>>>>>>> Vladimir
>>>>>>>>>>>>
>>>>>>>>>>>> On 10/20/16 8:45 AM, Jamsheed C m wrote:
>>>>>>>>>>>>> Hi All,
>>>>>>>>>>>>>
>>>>>>>>>>>>> bug id:https://bugs.openjdk.java.net/browse/JDK-8166002
>>>>>>>>>>>>>
>>>>>>>>>>>>> http://cr.openjdk.java.net/~jcm/8166002/webrev.00/
>>>>>>>>>>>>>
>>>>>>>>>>>>> Fix: set NeverActAsServerClassMachine=true, Limit TieredCompilation to C1 by default, for win32 platform.
>>>>>>>>>>>>>
>>>>>>>>>>>>> A new flag CompilationMode=<client/server> is introduced to select server/ client mode compilation. This
>>>>>>>>>>>>> option is supported only in TIERED builds.
>>>>>>>>>>>>>
>>>>>>>>>>>>> -XX:CompilationMode=server supports both -XX:+/-TieredCompilation.
>>>>>>>>>>>>>
>>>>>>>>>>>>> -XX:CompilationMode:client ignores TieredCompilation flag.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Please review,
>>>>>>>>>>>>>
>>>>>>>>>>>>> Best Regards,
>>>>>>>>>>>>>
>>>>>>>>>>>>> Jamsheed
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>
>>>
>
More information about the hotspot-compiler-dev
mailing list