RFR(S) : 8019915 : whitebox testClearMethodStateTest fails with tiered on sparc

Igor Ignatyev igor.ignatyev at oracle.com
Tue Aug 6 18:32:17 PDT 2013



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