You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by rm...@apache.org on 2022/11/15 21:06:46 UTC

[lucene] branch main updated: speed up javac and error-prone tasks by using less resources (#11927)

This is an automated email from the ASF dual-hosted git repository.

rmuir pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/lucene.git


The following commit(s) were added to refs/heads/main by this push:
     new b9c51d9a597 speed up javac and error-prone tasks by using less resources (#11927)
b9c51d9a597 is described below

commit b9c51d9a597d2d49c95151b25896ce8436ca635e
Author: Dawid Weiss <da...@carrotsearch.com>
AuthorDate: Tue Nov 15 22:06:38 2022 +0100

    speed up javac and error-prone tasks by using less resources (#11927)
    
    * pass jvm args to javac  #11925
    * Update net.ltgt.errorprone to the latest version so that jvm args are not overwritten, add -XX:+PrintFlagsFinal for debugging
    * speed up the pure javac case too
    
    It does not help to fork additional VMs (although error-prone will do
    this since it messes with bootstrap classpath), so we avoid forking.
    
    Instead it is best to tune org.gradle.jvmargs.
    
    * use the flags consistently everywhere (tests and doc)
    
    Co-authored-by: Robert Muir <rm...@apache.org>
---
 build.gradle                             |  2 +-
 gradle/generation/local-settings.gradle  |  2 +-
 gradle/hacks/turbocharge-jvm-opts.gradle | 12 ++++++++++--
 gradle/testing/defaults-tests.gradle     |  2 +-
 help/localSettings.txt                   |  2 +-
 5 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/build.gradle b/build.gradle
index a225d50366c..eb2cc45f62c 100644
--- a/build.gradle
+++ b/build.gradle
@@ -24,7 +24,7 @@ plugins {
   id "org.owasp.dependencycheck" version "7.2.0"
   id 'de.thetaphi.forbiddenapis' version '3.4' apply false
   id "de.undercouch.download" version "5.2.0" apply false
-  id "net.ltgt.errorprone" version "2.0.2" apply false
+  id "net.ltgt.errorprone" version "3.0.1" apply false
   id 'com.diffplug.spotless' version "6.5.2" apply false
   id 'org.barfuin.gradle.jacocolog' version "3.0.0-RC2" apply false
 }
diff --git a/gradle/generation/local-settings.gradle b/gradle/generation/local-settings.gradle
index cfb982a5708..51c72eacf6b 100644
--- a/gradle/generation/local-settings.gradle
+++ b/gradle/generation/local-settings.gradle
@@ -68,7 +68,7 @@ systemProp.file.encoding=UTF-8
 # The heap seems huge but gradle runs out of memory on lower values (don't know why).
 #
 # We also open up internal compiler modules for spotless/ google java format.
-org.gradle.jvmargs=-Xmx3g \\
+org.gradle.jvmargs=-Xmx3g -XX:TieredStopAtLevel=1 -XX:+UseParallelGC -XX:ActiveProcessorCount=1 \\
  --add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED \\
  --add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED \\
  --add-exports jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED \\
diff --git a/gradle/hacks/turbocharge-jvm-opts.gradle b/gradle/hacks/turbocharge-jvm-opts.gradle
index 5682dc17ad1..3ffe0456635 100644
--- a/gradle/hacks/turbocharge-jvm-opts.gradle
+++ b/gradle/hacks/turbocharge-jvm-opts.gradle
@@ -19,7 +19,8 @@
 allprojects {
     def vmOpts = [
         '-XX:+UseParallelGC',
-        '-XX:TieredStopAtLevel=1'
+        '-XX:TieredStopAtLevel=1',
+        '-XX:ActiveProcessorCount=1'
     ]
 
     // Inject vm options into custom javadoc rendering. We can't refer
@@ -38,4 +39,11 @@ allprojects {
 
         jvmArgs += vmOpts
     }
-}
\ No newline at end of file
+
+    // Tweak javac to not be too resource-hungry.
+    // This applies to any JVM when javac runs forked (e.g. error-prone)
+    // Avoiding the fork entirely is best.
+    tasks.withType(JavaCompile) { JavaCompile task ->
+        task.options.forkOptions.jvmArgs += vmOpts
+    }
+}
diff --git a/gradle/testing/defaults-tests.gradle b/gradle/testing/defaults-tests.gradle
index 187e5d272c4..6324800e213 100644
--- a/gradle/testing/defaults-tests.gradle
+++ b/gradle/testing/defaults-tests.gradle
@@ -47,7 +47,7 @@ allprojects {
            description: "Number of forked test JVMs"],
           [propName: 'tests.haltonfailure', value: true, description: "Halt processing on test failure."],
           [propName: 'tests.jvmargs',
-           value: { -> propertyOrEnvOrDefault("tests.jvmargs", "TEST_JVM_ARGS", "-XX:TieredStopAtLevel=1") },
+           value: { -> propertyOrEnvOrDefault("tests.jvmargs", "TEST_JVM_ARGS", "-XX:TieredStopAtLevel=1 -XX:+UseParallelGC -XX:ActiveProcessorCount=1") },
            description: "Arguments passed to each forked JVM."],
           // Other settings.
           [propName: 'tests.neverUpToDate', value: true,
diff --git a/help/localSettings.txt b/help/localSettings.txt
index 6772c31077b..4187aded8c6 100644
--- a/help/localSettings.txt
+++ b/help/localSettings.txt
@@ -47,7 +47,7 @@ separately from the gradle workers, for example:
 tests.jvms=3
 tests.heapsize=512m
 tests.minheapsize=512m
-tests.jvmargs=-XX:+UseParallelGC -XX:TieredStopAtLevel=1
+tests.jvmargs=-XX:+UseParallelGC -XX:TieredStopAtLevel=1 -XX:ActiveProcessorCount=1
 
 Gradle Daemon
 -------------