Request for review: 6888526 Linux getCurrentThreadCpuTime is drastically slower than Windows

Andrew Haley aph at redhat.com
Thu Jul 8 09:49:47 PDT 2010


On 07/08/2010 05:34 AM, David Holmes wrote:
> Daniel D. Daugherty said the following on 07/08/10 09:03:
>> The official configurations are listed here:
>>
>> http://java.sun.com/javase/6/webnotes/install/system-configurations.html
>>
>> but I don't know how to translate the various Linux versions
>> into something that would help resolve this issue.
> 
> The functionality should be supported in all 2.6.16+ kernels, and
> potentially supported in 2.6.10+ with appropriate patches - but, like
> Dan, I have no way to know what kernel versions the supported Linux
> distros actually have.
> 
> Because we dynamically check for the supported functionality this should
> not cause a problem as we will fall-back to using "slow clocks" if they
> aren't present.
> 
> I agree it is time to change this default, but note that we need to
> mention this in the release notes somewhere and, more importantly, we
> need to ensure there is extensive testing here because we may be using
> OS functionality that has hitherto been unused (or little used) and we
> may encounter bugs in that functionality (bugs in the OS? surely not! ;-))

Good point.  Please let me know if there is any more testing you'd
like me to do on Red Hat Linux systems.

> Further, as Dan mentions, this would then affect Java 6 updates and that
> is not allowed (without additional 'paperwork') so we'd have to augment
> Arguments::parse_each_vm_init_arg in arguments.cpp by adding to the end:
> 
>  if (JDK_Version::current().compare_major(6) <= 0 &&
>       FLAG_IS_DEFAULT(UseLinuxPosixThreadCPUClocks)) {
>     FLAG_SET_DEFAULT(UseLinuxPosixThreadCPUClocks, false);
>   }
> 
> this forces the flag to false in Java 6 unless it has been set explicitly.

New webrev at http://cr.openjdk.java.net/~aph/6888526-2/

I enclosed the JDK version test in #ifdef LINUX because I don't think
the UseLinuxPosixThreadCPUClocks flag exists in other systems.

I've tested this patch on a RHEL 4 system with the 2.6.9 kernel, which
works slowly, as expected, regardless of the setting of
UseLinuxPosixThreadCPUClocks.  I have made sure that on JDK 6 the flag
defaults to false, but it can still be enabled with
-XX:+UseLinuxPosixThreadCPUClocks.  I also made sure that on JDK 7
UseLinuxPosixThreadCPUClocks defaults to true.

Andrew.


More information about the hotspot-dev mailing list