Pls (re)review 6173675/7003271: per-thread memory allocation measurement

Paul Hohensee paul.hohensee at oracle.com
Sun Jan 9 23:29:03 PST 2011


I'll file a CR.

Thanks for your review!

Pul

On 1/10/11 2:01 AM, David Holmes wrote:
> Paul Hohensee said the following on 01/10/11 16:42:
>> My bad on the 7003271 webrev.  It's already pushed.  The only one to
>> review is 6173675.
>>
>> I replaced initialLongArray with java.util.Arrays.fill.
>>
>> I took the code for ThreadCpuTimeArray.java from
> test/java/lang/management/
>> ThreadCpuTime.java. The check for DELTA was in that code, so I kept 
>> it. Same with the argument of 200 to goSleep(). I'm assuming that the
>> same logic works, and it appears to do so. I can, though, change it
>> to be like the code in ThreadAllocatedMemoryArray.java.
>
> I'd say both tests using the DELTA are equally dubious, but I'd need 
> to know what the intent of that check was. If it was to see if the cpu 
> time advanced by an expected amount then a better test would be for 
> each thread to measure elapsed time around doit() and then have the 
> main thread check that the elapsed CPU time is <= the measured elapsed 
> time. (Some of the JVMTI test do similar comparisons).
>
> That said, given you are emulating existing tests that appear to work 
> I won't push for you to re-write them :) But we should have a CR to 
> either change them or at least make the DELTA a configurable value. I 
> can easily imagine that these tests will fail on some of our internal 
> platforms.
>
> Cheers,
> David
>
>>
>> Paul
>>
>> On 1/9/11 9:17 PM, David Holmes wrote:
>>> Hi Paul,
>>>
>>> Partial re-review :)
>>>
>>> Paul Hohensee said the following on 01/10/11 11:10:
>>>> Thanks to all who reviewed the previous webrev.  Revised versions 
>>>> are here
>>>>
>>>> http://cr.openjdk.java.net/~phh/6173675/webrev.02/
>>>
>>> In ThreadImpl.java you could replace:
>>>
>>>     long[] times = initialLongArray(length, -1);
>>>
>>> with
>>>
>>>     long[] times = java.util.Arrays.fill(new long[length], -1);
>>>
>>> and delete initialLongArray.
>>>
>>>
>>> In test/com/sun/management/ThreadMXBean/ThreadCpuTimeArray.java
>>>
>>> I don't understand the test logic. Your tests threads all do:
>>>
>>> doit();
>>> while (!done) wait
>>> doit();
>>>
>>> but the main thread doesn't check any times etc after setting 
>>> done=true, so why have the test threads do the second call to doit? 
>>> For that matter why even bother with doit()? It only delays the 
>>> threads in getting to the wait(), which is what the main thread 
>>> itself waits for.
>>>
>>>  111         goSleep(200);
>>>
>>> What does 200 represent? What is it that you are actually waiting 
>>> for? Is 200 long enough on a slow uniprocessor?
>>>
>>>  141             if ((times[i] + DELTA) < newTime) {
>>>  142                 throw new RuntimeException("TEST FAILED: " +
>>>
>>> Again what does DELTA represent, how can you be sure the times for 
>>> all threads will have advanced this much?
>>>
>>>
>>>> http://cr.openjdk.java.net/~phh/7003271/webrev.02/
>>>
>>> All files listed have zero changes ???
>>>
>>> Cheers,
>>> David
>>> -----
>>>
>>>> The interesting changes are in the library side for 6173675.  In 
>>>> particular,
>>>> I've added 3 unit tests.
>>>>
>>>> Thanks for any review,
>>>>
>>>> Paul
>>>>


More information about the hotspot-dev mailing list