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
-------------