RFR 9: 8098852 : java/lang/ProcessHandle/InfoTest.java failed: total cpu time

Joseph D. Darcy joe.darcy at oracle.com
Thu Jul 9 00:59:52 UTC 2015


Hi Roger,

Le me be more explicit, is getCpuTime() something that gets normalized 
to zero-ish at the start of each run or is it just a shapshot of some 
nano-second granularity counter? If it is the latter, it is possible 
that the counter value is negative or near the long overflow threshold.

-Joe

On 7/8/2015 2:11 PM, Roger Riggs wrote:
> Hi Joe,
>
> The cputime loop  is designed to run up the cputime of a child process 
> a specific
> amount so that the parent can verify that the cputime information reported
> about the child is correct.
>
> No issues on either point, the range long in nanoseconds is more than 
> sufficient for
> the length of time this test is running.  The test only asks for the 
> child to use 100ms.
>
> Thanks, Roger
>
> On 7/8/2015 5:05 PM, joe darcy wrote:
>> Hi Roger,
>>
>> A few comments on the updated version.
>>
>>  284                         long cpuMillis = 
>> Long.valueOf(args[nextArg++]);
>>  285                         long cpuTarget = getCpuTime() + 
>> cpuMillis * 1_000_000L;
>>  286                         while (getCpuTime() < cpuTarget) {
>>  287                             // burn the cpu until the time is up
>>
>> Are there interger overflow issues in adding to the result of 
>> getCpuTime()?
>>
>> Should the time values be a function of the timeout factor the test 
>> is running under?
>>
>> If the answer to both of these is "no," then I think this is okay as-is.
>>
>> Thanks,
>>
>> -Joe
>>
>> On 7/8/2015 1:07 PM, Roger Riggs wrote:
>>> Hi Joe,
>>>
>>> Updated the webrev in place.
>>> http://cr.openjdk.java.net/~rriggs/webrev-info-8098852/
>>>
>>> On 7/7/2015 7:59 PM, joe darcy wrote:
>>>> Hi Roger,
>>>>
>>>> Generally looks okay; a few comments and suggestions
>>>>
>>>> 114             long cpulooptime = 100;             // 100 ms
>>>>
>>>> How about
>>>>
>>>>     cpuLoopTime
>>> ok
>>>>
>>>> instead? Same comment for the other variables that don't follow 
>>>> camel-case conventions.
>>> I fixed a few others too.
>>>>
>>>>  284                         long cpumillis = 
>>>> Long.valueOf(args[nextArg++]);
>>>>  285                         long cpuTarget = getCpuTime() + 
>>>> cpumillis * 1_000_000L;
>>>>  286                         while (getCpuTime() < cpuTarget) {
>>>>
>>>> Is it correct to multiply cpu-millis by 1e6 rather than 1e3?
>>> Yes, CpuTime is in nanos = millis * 1000 (micros) * 1000
>>>
>>> Thanks, Roger
>>>
>>>>
>>>> -Joe
>>>>
>>>> On 7/7/2015 11:52 AM, Roger Riggs wrote:
>>>>> Please review this ProcessHandle test change to cleanup 
>>>>> intermittent failures.
>>>>> The cpuloop timing uses the cputime of the spawned process and the
>>>>> test runs fewer iterations and relaxes the threshold.
>>>>>
>>>>> Webrev:
>>>>> http://cr.openjdk.java.net/~rriggs/webrev-info-8098852/
>>>>>
>>>>> Issue:
>>>>> https://bugs.openjdk.java.net/browse/JDK-8098852
>>>>>
>>>>> Thanks, Roger
>>>>>
>>>>
>>>
>>
>




More information about the core-libs-dev mailing list