On Thu, 8 Sep 2022 08:08:54 GMT, Aleksey Shipilev <[email protected]> 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/

I fully agree with Erik. The idea is good, but what is a suitable default? The 
patch, as it stands, requires all distributors to update their build scripts to 
get the same output as they did before the patch. So if we set the default to 6 
instead (iiuc), we will get the same default behavior, but we can get a speedup 
by passing an argument to configure.

Normally, my stance would be that configure with few arguments should setup a 
good developer experience, and that CI systems can afford to add extra flags. 
In principle I think that should apply here too, but I'm slightly more worried 
that we might not be able to reach out to everyone affected.

Also, if we do end up keeping the default as currently suggested in this PR, we 
need at least to update the jib-profiles.conf file.

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

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

Reply via email to