RFR: 8166002: Emulate client build on platforms with reduced virtual address space
Jamsheed C m
jamsheed.c.m at oracle.com
Tue Jan 3 04:25:17 UTC 2017
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