RFR: 8290466: Default to --with-source-date=current to avoid unmodified Hotspot recompilation [v2]

Aleksey Shipilev shade at openjdk.org
Sun Jul 31 18:38:00 UTC 2022


On Fri, 29 Jul 2022 09:34:53 GMT, Aleksey Shipilev <shade at openjdk.org> wrote:

>> See the bug for symptoms and rationale.
>> 
>> In short, after [JDK-8288396](https://bugs.openjdk.org/browse/JDK-8288396) moved the timestamp to `CFLAGS_VM_VERSION` macro, which changes with every build, we get Hotspot recompilation every time, even when Hotspot is not modified.
>> 
>> I believe current behavior is correct for `--with-source-date=updated` (current default): you do Hotspot build, you get updated build timestamp, which forces recompilation of affected compilation units, relinkage, re-creation of jmods/jimage. The way out is to switch to `--with-source-date=current`, which would only get the build timestamp at configure time.
>> 
>> CIs and build farms are likely reconfiguring before every build anyway, so their behavior is unlikely to be affected. But this switch definitely improves the day-to-day OpenJDK development work: it saves >50 seconds on every `make` for my machine, see below.
>> 
>> Back-to-back unmodified build before:
>> 
>> 
>> $ CONF=linux-x86_64-server-release time make hotspot
>> Building target 'hotspot' in configuration 'linux-x86_64-server-release'
>> Finished building target 'hotspot' in configuration 'linux-x86_64-server-release'
>> 
>> 39.03user 10.97system 0:56.89elapsed 87%CPU (0avgtext+0avgdata 2048944maxresident)k
>> 363616inputs+4108072outputs (484major+1100154minor)pagefaults 0swaps
>> 
>> $ CONF=linux-x86_64-server-release time make hotspot
>> Building target 'hotspot' in configuration 'linux-x86_64-server-release'
>> Finished building target 'hotspot' in configuration 'linux-x86_64-server-release'
>> 
>> 38.18user 9.02system 0:49.18elapsed 95%CPU (0avgtext+0avgdata 2048788maxresident)k
>> 40inputs+4101112outputs (0major+1100077minor)pagefaults 0swaps
>> 
>> 
>> Back-to-back unmodified build after:
>> 
>> 
>> $ CONF=linux-x86_64-server-release time make hotspot
>> Building target 'hotspot' in configuration 'linux-x86_64-server-release'
>> Finished building target 'hotspot' in configuration 'linux-x86_64-server-release'
>> 
>> 2.15user 0.22system 0:02.59elapsed 91%CPU (0avgtext+0avgdata 49480maxresident)k
>> 0inputs+176outputs (0major+55506minor)pagefaults 0swaps
>> 
>> $ CONF=linux-x86_64-server-release time make hotspot
>> Building target 'hotspot' in configuration 'linux-x86_64-server-release'
>> Finished building target 'hotspot' in configuration 'linux-x86_64-server-release'
>> 
>> 2.18user 0.14system 0:02.46elapsed 94%CPU (0avgtext+0avgdata 49332maxresident)k
>
> Aleksey Shipilev has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains three additional commits since the last revision:
> 
>  - Missed the spot
>  - Merge branch 'master' into JDK-8290466-default-source-date-current
>  - Fix

Entering the week with faster builds.

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

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



More information about the build-dev mailing list