RFR: 8166002: Emulate client build on platforms with reduced virtual address space

Vladimir Kozlov vladimir.kozlov at oracle.com
Tue Jan 17 18:15:56 UTC 2017


Looks good. Thank you, Jamsheed, for finishing this.

Thanks,
Vladimir

On 1/16/17 7:41 AM, Jamsheed C m wrote:
> Hi Vladimir,
>
> as per internal discussion, made following changes
>
> 1) The default VM ergonomics on Windows/x86 (32-bit) are changed to
> client like(client compiler, SerialGC, Xshare:auto). No new flag
> provided to switch to server mode.
>
> 2) -XX:+|-TieredCompilation switch to server mode.
>
> revised webrev:
>
> hotspot part: http://cr.openjdk.java.net/~jcm/8166002/webrev.06/
>
> root hs part: http://cr.openjdk.java.net/~jcm/8166002/webrev.06.hs/
>
> CCC request will be withdrawn.
>
> Best Regards,
>
> Jamsheed
>
> On 1/10/2017 10:02 AM, Jamsheed C m wrote:
>> Hi Vladimir,
>>
>> On 1/10/2017 12:57 AM, Vladimir Kozlov wrote:
>>> Hi, Jamsheed
>>>
>>> Why you set flags related to segmented codecache?
>>> NonProfiledCodeHeapSize, ProfiledCodeHeapSize, NonNMethodCodeHeapSize
>> i made setting more equivalent to c1_globals_XX.hpp non tiered settings.
>>>
>>> SegmentedCodeCache should be off in Client mode. SegmentedCodeCache
>>> setting is done in set_tiered_flags() which is called after you
>>> changed ReservedCodeCacheSize in set_client_compilation_mode() and
>>> will not be set to true.
>> Yeah.
>>>
>>> Unfortunately we can do nothing for CodeCacheSegmentSize which is 128
>>> bytes in tiered VM since it is constant in product VM.
>> Ok.
>>>
>>> I also forgot to tell that you should use FLAG_SET_ERGO() macro for
>>> flags settings in set_client_compilation_mode().
>> Ok.
>> Best Regards,
>> Jamsheed
>>>
>>> Thanks,
>>> Vladimir
>>>
>>> On 1/3/17 9:56 AM, Vladimir Kozlov wrote:
>>>> Good.
>>>>
>>>> Thanks,
>>>> Vladimir
>>>>
>>>> On 1/3/17 8:17 AM, Jamsheed C m wrote:
>>>>> Hi Vladimir,
>>>>>
>>>>> On 1/3/2017 11:15 AM, Vladimir Kozlov wrote:
>>>>>> Hi Jamsheed
>>>>>>
>>>>>> Why you moved set_client_compilation_mode() to c1_globals and new
>>>>>> class? Why not to keep it in compilerDefinitions?
>>>>>>
>>>>> Done.
>>>>>> selected_with_other_flags setting and code in
>>>>>> compilation_mode_selected() have the same checks - factor them into
>>>>>> one function.
>>>>> Done.
>>>>>>
>>>>>> I would suggest to keep comment in compilationPolicy.cpp.
>>>>> Done.
>>>>> revised webrev: http://cr.openjdk.java.net/~jcm/8166002/webrev.05/
>>>>>
>>>>> Best Regards,
>>>>> Jamsheed
>>>>>>
>>>>>> 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