RFR (S): 8165501: Serial, Parallel and G1 should track the time since last gc for millis_since_last_gc() with full precision
Thomas Schatzl
thomas.schatzl at oracle.com
Thu Jun 25 11:44:42 UTC 2020
Hi Ivan,
thanks for your review!
On 25.06.20 11:47, Ivan Walulya wrote:
> Hi Thomas,
>
> A few comments below,
>
> src/hotspot/share/gc/parallel/psParallelCompact.cpp
>
> - jlong now = os::javaTimeNanos() / NANOSECS_PER_MILLISEC;
> - jlong ret_val = now - _time_of_last_gc;
> + jlong now = os::javaTimeNanos();
> + jlong ret_val = (now - _time_of_last_gc_ns) / NANOSECS_PER_MILLISEC;
>
> |jlong now| => |jlong now_ns| i see you do this for most of the
> variable names that refer to time in
> Nanossrc/hotspot/share/gc/g1/g1Policy.hpp
>
> + jlong time_of_last_gc() { return _time_of_last_gc_ns; }
>
> same as previous comment, better to maintain the
> _nssrc/hotspot/share/gc/shared/generation.hpp
>
> // Time (in ms) when we were last collected or now if a collection is
> // in progress.
> virtual jlong time_of_last_gc(jlong now) {
> // Both _time_of_last_gc and now are set using a time source
> // that guarantees monotonically non-decreasing values provided
> // the underlying platform provides such a source. So we still
> // have to guard against non-monotonicity.
> NOT_PRODUCT(
> if (now < _time_of_last_gc_ns) {
> log_warning(gc)("time warp: " JLONG_FORMAT " to " JLONG_FORMAT, _time_of_last_gc_ns, now);
> }
> )
> return _time_of_last_gc_ns;
> } virtual void update_time_of_last_gc(jlong now) {
> _time_of_last_gc_ns = now;
> }
>
> comments should be edited to reflect the changes, in addition to _ns
>
I think I caught them all in
http://cr.openjdk.java.net/~tschatzl/8165501/webrev.1
no incremental one since almost everything changed anyway, doing another
pass at making the code look similar.
Retested using the mentioned test.
Thanks,
Thomas
More information about the hotspot-gc-dev
mailing list