RFR (M): 8235741: Inappropriate uses of os::javaTimeMillis()

David Holmes david.holmes at oracle.com
Mon Jan 13 07:13:34 UTC 2020


webrev: http://cr.openjdk.java.net/~dholmes/8235741/webrev/
bug: https://bugs.openjdk.java.net/browse/JDK-8235741

Full details in the bug report about the existing uses of 
javaTimeMillis(), many of which just want an elapsed time in ms and so 
should be using javaTimeNanos() and convert to ms. This covers areas all 
across the VM.

Only non-simple change is in os_perf_linux.cpp (and the same code will 
be in os_perf_aix.cpp once it has been validated). There we are tracking 
an elapsed time in ms but relative to the boot time, which is seconds 
since the epoch. Consequently the first interval has to be calculated 
using javaTimeMillis, but after that we can use javaTimeNanos (using a 
new 'first time' captured at the same time we used javaTimeMillis). I 
think I have the logic right but other than through JFR this code seems 
unused and I have limited means of testing it. The JFR test 
jdk/jfr/event/os/TestThreadContextSwitches.java exercises the code but 
the results of running that test seems to exhibit arbitrary randomness 
in the rates reported - e.g. 0 to 16000Hz - both with and without my 
change, so not really that useful. Stefan K. suggested a gtest which I 
may look into - though it is frustrating to have to expend such effort 
to validate this.

Other testing tiers 1-3.

Thanks,
David


More information about the hotspot-dev mailing list