On Wed, 6 May 2026 07:45:41 GMT, Thomas Schatzl <[email protected]> wrote:

> Hi all,
> 
>   please review this change that allows building of the JDK without Serial GC 
> enabled.
> 
> There were some hardcoded entries for -XX:+UseSerialGC in the makefiles, and 
> one of the gtests is serial gc specific and needed to be moved. Noticed 
> during tests with JEP 523: Make G1 the Default Garbage Collector in All 
> Environments.
> 
> I opted to a different fix than suggested in the CR, instead of wholesale 
> ignoring unrecognized options, only add serial gc to the relevant options if 
> the feature is enabled in the build. The change seems small enough.
> 
> Tested manually with and without `--with-jvm-features=-serialgc`, both image 
> building and running the test works in both cases (being skipped/not found if 
> serial gc has not been enabled).
> 
> Other testing: gha
> 
> Thanks,
>   Thomas
> 
> 
> 
> 
> ---------
> - [x] I confirm that I make this contribution in accordance with the [OpenJDK 
> Interim AI Policy](https://openjdk.org/legal/ai).

Test: fastdebug image building (that's what I mostly do, but ymmv)

Either using `-XX:+UseG1GC` wherever there is currently `-XX:+UseSerialGC` in 
the makefiles - this is the case after making G1 default always (JEP 523); 
without JEP 523 one would either get Serial by default (exactly the same as 
before) or G1, which I explicitly tested.

`$ for i in `seq 0 4`; do make reconfigure clean CONF=fastdebug-test; 
/usr/bin/time -a -o baseline.time make CONF=fastdebug-test images ; done`

* the build configurations may not have been completely comparable across 
platforms; basically using whatever was configured at the time. Mix of open 
only/including closed sources.
* note that depending OS, time output is different
* the systems were idle, but not particularly benchmark-prepared

aarch64/OSX Apple M4-something

With -XX:+UseG1GC
      242,37 real      1027,29 user       328,87 sys
      242,10 real      1041,49 user       327,30 sys
      242,55 real      1041,00 user       327,55 sys
      244,88 real      1041,61 user       331,53 sys
      238,77 real      1028,97 user       324,27 sys

With -XX:+UseSerialGC
      242,03 real      1008,41 user       328,66 sys
      240,41 real      1013,91 user       322,72 sys
      241,01 real      1032,61 user       334,18 sys
      240,78 real      1018,91 user       326,91 sysa
      246,80 real      1019,30 user       329,62 sys

Aarch64/linux 8 cores/threads
  
  With -XX:+UseG1GC
  3609.77 user 397.28 system 10:50.72 elapsed 615%CPU
  3609.06 user 399.17 system 10:50.69 elapsed 615%CPU 
  3603.77 user 398.48 system 10:47.87 elapsed 617%CPU 
  3607.01 user 397.20 system 10:48.46 elapsed 617%CPU 
  3610.96 user 397.54 system 10:50.47 elapsed 616%CPU 

With -XX:+UseSerialGC
  3594.05 user 390.28 system 10:47.74 elapsed 615%CPU
  3598.96 user 393.94 system 10:48.69 elapsed 615%CPU
  3603.72 user 400.47 system 10:52.30 elapsed 613%CPU
  3598.58 user 395.28 system 10:50.41 elapsed 614%CPU 
  3597.56 user 396.53 system 10:46.82 elapsed 617%CPU 

x86/linux 18cores/36 threads

With -XX:+UseG1GC

7832.05 user 312.06 system 5:14.24 elapsed 2591% CPU
7857.10 user 311.21 system 5:13.48 elapsed 2605%CPU
7863.41 user 311.84 system 5:14.73 elapsed 2597%CPU
7861.16 user 310.59 system 5:13.34 elapsed 2607%CPU
7859.08 user 312.54 system 5:14.76 elapsed 2596%CPU

With -XX:+UseSerialGC

7947.52 user 411.59 system 5:20.41 elapsed 2608% CPU (not sure, seems outlier)
7949.13 user 404.06 system 5:19.74 elapsed 2612% CPU (not sure, seems outlier)
7856.50 user 317.78 system 5:13.77 elapsed 2605% CPU
7853.48 user 312.27 system 5:15.62 elapsed 2587% CPU
7853.75 user 311.70 system 5:14.65 elapsed 2595% CPU

To me this is significantly enough to be the same (comparing e.g. user times 
differences are very small), so I will go ahead removing the flags.

-------------

PR Comment: https://git.openjdk.org/jdk/pull/31049#issuecomment-4404861244

Reply via email to