RFR(S) : 8019915 : whitebox testClearMethodStateTest fails with tiered on sparc
Igor Ignatyev
igor.ignatyev at oracle.com
Wed Aug 7 16:49:16 PDT 2013
Vladimir,
According to result of our yesterday's investigation, I added
'compileonly' directive into each tests to prevent other compilations.
webrev: http://cr.openjdk.java.net/~iignatyev/8019915/webrev.01/
Best regards,
Igor Ignatyev
On 08/07/2013 05:32 AM, Igor Ignatyev wrote:
>
>
> On 08/07/2013 05:06 AM, Vladimir Kozlov wrote:
>> On 8/6/13 5:50 PM, Igor Ignatyev wrote:
>>> Vladimir,
>>>
>>> Answers inline.
>>> On 08/06/2013 11:24 PM, Vladimir Kozlov wrote:
>>>> Igor,
>>>>
>>>> Two things.
>>>> First, could you explain what do you mean under "queue overloaded"?
>>> I mean very very big count of methods in compiler queue, that affect
>>> compiler threshold in tiered compilation. For example, excerpt from .jtr
>>> file:
>>> TEST CASE:CONSTRUCTOR_TEST
>>> at test's start:
>>>
>>> private TestCase$Helper(int):
>>> compilable: true
>>> compiled: false
>>> comp_level: 0
>>> in_queue: false
>>> compile_queues_size: 47
>>>
>>> As we can see queue contains 47 methods, so threshold many more than
>>> 100.
>>>> Could you fix all white box test to not print by default
>>>> System.out.println("method was invoked " + count + " times");?
>>>>
>>>> The same for these chagnes:
>>>> System.out.printf("Compiler queue size is %d, waiting...%n", size);
>>>>
>>>> Can you put this under debugging flag (-Dverbose) so when we do normal
>>>> jtreg runs they will not print it? They really pollute jtreg output,
>>>> see
>>>> the output file IsMethodCompilableTest.jtr from the bug report.
>>> sure, I will do this.
>>>
>>>> I think you can partially avoid the problem if you use
>>>> CICompilerCount=1.
>>>>
>>>> Is it possible that a method is compiled before your (401) count
>>>> because
>>>> of Tiered compilation? C1 in Tiered has threshold = 100.
>>> Sorry, but it looks like you're mistaken look at output of
>>> IsMethodCompilableTest, but the bug is about ClearMethodStateTest and it
>>> also affect only MakeMethodNotCompilableTest. IsMethodCompilableTest
>>> fails due to JDK-8007270 'C1: compilation after reaching of
>>> recompilation's limit'
>>
>> Okay, my bad. But looking on ClearMethodStateTest log, the queue size is
>> only 2 at the end. For MakeMethodNotCompilableTest is is also 2.
>> What I am trying to say is that waiting empty queue could be not enough.
> Maybe you're right, but it definitely will help.
>> Are you always set background compilation to false?
> No, I don't.
>> Since your method very small the intepreter thread can execute a lot
>> of iterations before
>> compiler thread finish compilation (especially C2). It depends how OS
>> schedules threads and other things.
> Yes, it's true, but method 'checkCompiled()' won't throw exception if
> method is in queue. In that case, it will just print warning message
> (see CompilerWhiteBoxTest:187-191). So to pass check method should be
> compiled or just be in queue.
>>
>> Vladimir
>>
>>>
>>>> thanks,
>>>> Vladimir
>>>>
>>>> On 8/6/13 12:57 AM, Igor Ignatyev wrote:
>>>>> Hi all,
>>>>>
>>>>> Please review patch.
>>>>>
>>>>> Problem:
>>>>> 'compiler/whitebox' tests fail with exception "<method_name> must be
>>>>> compiled". The problem with these tests is as follows: tests don't
>>>>> assume that compiler's queue can be overloaded at the moment of
>>>>> 'compile(I)' invocation.
>>>>>
>>>>> Fix:
>>>>> Waiting for empty compiler queue was added into start of 'compile(I)'.
>>>>>
>>>>>
>>>>> webrev: http://cr.openjdk.java.net/~iignatyev/8019915/webrev.00/
>>>>> jbs: https://jbs.oracle.com/bugs/browse/JDK-8019915
>>>>> bug: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8019915
>>>>> testing: compiler/whitebox
More information about the hotspot-compiler-dev
mailing list