RFR: 8166002: Emulate client build on platforms with reduced virtual address space
Igor Veresov
igor.veresov at oracle.com
Tue Jan 17 20:22:30 UTC 2017
Looks good to me too.
igor
> On Jan 17, 2017, at 9:15 PM, Vladimir Kozlov <vladimir.kozlov at oracle.com> wrote:
>
> 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