RFR: JDK-8166965: Some small java build tools are still running with big JVM configuration

Erik Joelsson erik.joelsson at oracle.com
Mon Oct 3 08:30:42 UTC 2016



On 2016-10-03 09:04, Magnus Ihse Bursie wrote:
> On 2016-09-30 16:45, Erik Joelsson wrote:
>> A while back, we introduced the JAVA_SMALL configuration in the 
>> build, which improved build performance and reduced resource usage 
>> for several small java instances. However, it was never fully applied 
>> to all command lines where it would fit.
>>
>> I have looked through the entire build and measured performance with 
>> the current "BIG" configuration vs the "SMALL" one. In all cases, the 
>> small config won, especially when measuring total user time, but also 
>> for wall clock time. The total impact on a full build is of course 
>> small, since we already hit the low hanging fruit previously, but 
>> it's still nice to take this optimization all the way.
>>
>> On my Linux workstation, I save about 3 minutes of user time and a 
>> few seconds of wall clock. On a macpro, 2 minutes of user time and a 
>> few seconds of wall clock.
>>
>> Bug: https://bugs.openjdk.java.net/browse/JDK-8166965
>>
>> Webrev: http://cr.openjdk.java.net/~erikj/8166965/webrev.01
>
> Looks good to me. Thanks for continuing to improve performance!
>
> Just a few questions:
>
> * I can't see how the changes in MainSupport.gmk fits in. Is that a 
> separate issue you fixed?
>
Right, that is actually unrelated. As I was trying to isolate certain 
build steps, I couldn't run targets like "jdk.compiler-gensrc-langtools" 
in isolation, because the NO_RECIPES check would prevent them from being 
exported to Init.gmk. I could only run jdk.compiler-gensrc, but then 
that target triggered a pretty big chain of dependencies 
(buildtools-jdk, interim-langtools) that ruined my measurements. This 
change fixes the exporting of repo specific targets to Init.gmk.
> * Where do we have the "big" configuration? The module compilations? 
> Elsewhere?
>
The big Javadoc invocation uses and needs it. When not using the javac 
server, the module compilations use it. The javac server has its own set 
of flags.

/Erik



More information about the build-dev mailing list