Boot JDK version; was Re: RFR: JDK-8188312 Use CDS if present when running the Boot JDK during build (original) (raw)
Jonathan Gibbons jonathan.gibbons at oracle.com
Thu Oct 5 16:15:48 UTC 2017
- Previous message (by thread): RFR: JDK-8188312 Use CDS if present when running the Boot JDK during build
- Next message (by thread): Boot JDK version; was Re: RFR: JDK-8188312 Use CDS if present when running the Boot JDK during build
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
This thread brings up the question ... when are we going to switch to JDK 9 as the required boot JDK? Is there any compelling reason to -not- upgrade yet?
-- Jon
On 10/3/17 1:37 PM, Magnus Ihse Bursie wrote:
It might be the case that we should not really continue with this as long as we have JDK 8 as default boot jdk.
If so, we should at least add a -Xshare:auto, which will allow the user to manually add a system-wide CDS archive to their boot jdk, and benefit from it. And then we'll revisit this when we switch to JDK 9, to see if "-XX:-VerifySharedSpaces -XX:SharedArchiveFile=x" is worth the effort. Sounds reasonable? /Magnus
On 2017-10-03 16:45, Erik Joelsson wrote: The change looks good, but unfortunately I don't see a lot of gain. First of all it seems the -XX:SharedArchiveFile option removes a lot of the performance gain. Here are some rough numbers from my machine. All of them are "time make images" with a clean build directory, on a 16 core/32 threads linux box. In some cases I did two runs, which further shows the amount of variance in the build time.
Baseline: boot jdk 8, no cds real 3m14.688s user 38m34.132s sys 5m4.032s real 3m11.086s user 38m16.820s sys 4m35.344s Magnus second patch: boot jdk 8, cds SharedArchiveFile real 3m6.268s user 38m9.168s sys 4m13.392s real 3m15.985s user 37m55.328s sys 3m50.140s Magnus first patch: boot jdk 8, cds in classes.jsa real 2m55.972s user 37m59.636s sys 4m1.020s Baseline with boot jdk 9, no cds real 3m14.262s user 40m9.216s sys 5m5.480s Magnus first patch: boot jdk 9, cds in classes.jsa real 3m12.721s user 39m29.332s sys 4m25.472s Magnus second patch: boot jdk 9, -XX:SharedArchiveFile, -XX:-VerifySharedSpaces real 3m4.297s user 39m24.556s sys 4m31.980s So from this (certainly limited) data set, the only configuration that shows meaningful improvement is with boot jdk 8 and the first patch, where we stealth add classes.jsa to the boot jdk. I find this a very bad thing to do in principle so would vote against such a solution anyway. Also note that we will switch default boot from 8 to 9 very soon, so it's really the results on 9 that are relevant here. In 9, there is another option, -XX:-VerifySharedSpaces which removes most of the overhead added by -XX:SharedArchiveFile. Perhaps using that this becomes worth while. I would like to see more data showing the optimization is actually relevant. On my machine it seems to make a measurable difference, but not a very significant one. One note on the proposed change. While working on this, when I changed my boot jdk, configure did not regenerate the classes.jsa file. I believe for safety we should regenerate on every configure run. It's not that expensive anyway. /Erik
On 2017-10-03 14:55, David Holmes wrote: Looks good to me. Thanks, David On 3/10/2017 10:47 PM, Magnus Ihse Bursie wrote: On 2017-10-03 14:21, David Holmes wrote: Erik J. raises a good point in the bug report that -XX:SharedArchiveFile=xxx should be used if we create the archive. The build system has no business creating an archive inside the boot JDK.
Agree, that is a better solution. I was not aware of the -XX:SharedArchiveFile option. Here's an updated webrev: http://cr.openjdk.java.net/~ihse/JDK-8188312-use-CDS-for-bootjdk/webrev.02
I create the jsa file in configure-support, that way it can survive a "make clean". /Magnus
David On 3/10/2017 9:02 PM, David Holmes wrote: Hi Claes, On 3/10/2017 8:48 PM, Claes Redestad wrote: Hi, -Xshare:auto silently ignores failures to map the shared archive and should be safe to use. I think you're thinking of -Xshare:on which will fail/abort the VM if mapping fails. Ah okay. In that case seems reasonable. But please test thoroughly across all platforms in JPRT. Thanks, David /Claes
On 2017-10-03 12:28, David Holmes wrote: Hi Magnus, As I just put in the bug report, it isn't quite this simple. You have to be able to tolerate/recover from failure to map the shared archive. Cheers, David On 3/10/2017 8:24 PM, Magnus Ihse Bursie wrote: We should use CDS to minimize Java startup time during build. We run multiple Java commands, and every second counts. On my machine, I get a ~3% build time speedup with this fix. Bug: https://bugs.openjdk.java.net/browse/JDK-8188312 WebRev: http://cr.openjdk.java.net/~ihse/JDK-8188312-use-CDS-for-bootjdk/webrev.01
/Magnus
- Previous message (by thread): RFR: JDK-8188312 Use CDS if present when running the Boot JDK during build
- Next message (by thread): Boot JDK version; was Re: RFR: JDK-8188312 Use CDS if present when running the Boot JDK during build
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]