RFR: Off-by-one error in degen progress calculation
Roman Kennke
rkennke at redhat.com
Thu Aug 30 18:26:27 UTC 2018
Ok
> Freeing up one region is enough, but it is not captured, because we have off-by-one error here:
>
> diff -r cc8a1bd74e70 src/hotspot/share/gc/shenandoah/shenandoahMetrics.cpp
> --- a/src/hotspot/share/gc/shenandoah/shenandoahMetrics.cpp Thu Aug 30 20:18:48 2018 +0200
> +++ b/src/hotspot/share/gc/shenandoah/shenandoahMetrics.cpp Thu Aug 30 20:19:23 2018 +0200
> @@ -146,11 +146,11 @@
> }
>
> // Freed up enough? Good! Declare victory.
> size_t progress_actual = (_used_before > _used_after) ? _used_before - _used_after : 0;
> size_t progress_expected = ShenandoahHeapRegion::region_size_bytes();
> - if (progress_actual > progress_expected) {
> + if (progress_actual >= progress_expected) {
> return true;
> }
> log_info(gc,ergo)("Not enough progress (" SIZE_FORMAT "M, need " SIZE_FORMAT "M) after %s",
> progress_actual / M, progress_expected / M, label);
>
>
> Testing: tier1_gc_shenandoah, eyeballing heavy degen workloads
>
> Thanks,
> -Aleksey
>
More information about the shenandoah-dev
mailing list