RFR: 8293532: Use lighter jmod compression levels in build config [v2]

Magnus Ihse Bursie ihse at openjdk.org
Tue Sep 20 17:32:50 UTC 2022


On Tue, 20 Sep 2022 15:00:48 GMT, Aleksey Shipilev <shade at openjdk.org> wrote:

>> As follow-up to [JDK-8293499](https://bugs.openjdk.org/browse/JDK-8293499), JDK build can stick to lighter jmod compression levels to gain build performance.
>> 
>> 
>> # ----- Baseline
>> $ time CONF=linux-x86_64-server-release make clean-images images
>> real	0m10.762s
>> user	1m5.157s
>> sys	0m12.370s
>> 
>> $ du -sk build/linux-x86_64-server-release/images/jdk/jmods/
>> 81480	build/linux-x86_64-server-release/images/jdk/jmods/
>> 
>> $ time CONF=linux-x86_64-server-release make clean-images images
>> real	0m9.574s
>> user	1m2.644s
>> sys	0m12.143s
>> 
>> $ du -sk build/linux-x86_64-server-release/images/jdk/jmods/
>> 85744	build/linux-x86_64-server-release/images/jdk/jmods/
>> 
>> 
>> This gets even more substantial if JVM is configured with `--with-native-debug-symbols=internal`, in which case `java.base` includes a much larger `libjvm.so`:
>> 
>> 
>> # Baseline
>> $ time CONF=linux-x86_64-server-release make clean-images images
>> real	0m36.617s
>> user	1m30.216s
>> sys	0m11.692s
>> 
>> $ du -sk build/linux-x86_64-server-release/images/jdk/jmods/
>> 295428	build/linux-x86_64-server-release/images/jdk/jmods/
>> 
>> # Patched
>> $ time CONF=linux-x86_64-server-release make clean-images images
>> real	0m22.183s
>> user	1m13.841s
>> sys	0m11.657s
>> 
>> $ du -sk build/linux-x86_64-server-release/images/jdk/jmods/
>> 316856	build/linux-x86_64-server-release/images/jdk/jmods/
>> 
>> 
>> Users can use `--with-jmod-compress=zip-6` to get the original JMOD compression level back. Or, they can give up on compression altogether using `--with-jmod-compress=zip-0`, and then reap even more time benefits:
>> 
>> 
>> $ time CONF=linux-x86_64-server-release make clean-images images
>> real	0m6.411s
>> user	0m56.145s
>> sys	0m12.278s
>> 
>> $ du -sk build/linux-x86_64-server-release/images/jdk/jmods/
>> 183752	build/linux-x86_64-server-release/images/jdk/jmods/
>
> Aleksey Shipilev has updated the pull request incrementally with three additional commits since the last revision:
> 
>  - Typos
>  - GHA should use the zip-1 level across all builds
>  - Move detection and defaults to configure, select compression based on release/debug

make/autoconf/jdk-options.m4 line 491:

> 489:   fi
> 490: 
> 491:   UTIL_ARG_WITH(NAME: jmod-compress, TYPE: string,

The `string` type does not check values. I am not at a computer right now so I can check, but I think you need the type called `literal`. Try greping for VALID_VALUES to see other usages.

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

PR: https://git.openjdk.org/jdk/pull/10214



More information about the build-dev mailing list