diff --git a/build.gradle b/build.gradle index 00d41003c..3ba6bef64 100644 --- a/build.gradle +++ b/build.gradle @@ -333,11 +333,16 @@ Provider matrixWorkers = gradle.sharedServices.registerI maxParallelUsages.set(matrixParallelism) } List nestedBuildArguments = [gradle.startParameter.buildCacheEnabled ? '--build-cache' : '--no-build-cache'] -if (providers.gradleProperty('multiplexorSandbox').getOrElse('false').toBoolean()) { +boolean multiplexorSandbox = providers.gradleProperty('multiplexorSandbox').getOrElse('false').toBoolean() +int nestedWorkers = multiplexorSandbox + ? Math.max(1, gradle.startParameter.maxWorkerCount.intdiv(matrixParallelism)) + : Math.min(2, gradle.startParameter.maxWorkerCount) +int nestedProcessors = multiplexorSandbox ? nestedWorkers : 2 +if (multiplexorSandbox) { nestedBuildArguments.addAll(['--no-daemon', '-PmultiplexorSandbox=true']) } String nestedJvmArguments = providers.gradleProperty('org.gradle.jvmargs').getOrElse('') + - ' -XX:ActiveProcessorCount=2' + " -XX:ActiveProcessorCount=${nestedProcessors}" if (gradle.startParameter.rerunTasks) { nestedBuildArguments.add('--rerun-tasks') } @@ -373,7 +378,7 @@ irisModTargets.each { String targetMinecraft, Map target -> javaRuntime.set((int) target.java) List command = [rootProject.file(moddedWrapperScript).absolutePath, 'assemble', 'compileTestJava', 'verifyLoggingPolicy', 'verifyNativeClassBoundary', '--console=plain', - "--max-workers=${Math.min(2, gradle.startParameter.maxWorkerCount)}", + "--max-workers=${nestedWorkers}", "-Dorg.gradle.jvmargs=${nestedJvmArguments.trim()}", "-Dorg.gradle.daemon.registry.base=${rootProject.file(".gradle/iris-daemons/slot-${daemonSlot}").absolutePath}", '-Dorg.gradle.daemon.idletimeout=3600000', diff --git a/gradle/multiplexor.gradle b/gradle/multiplexor.gradle index f3b2ac5d0..a43e29fca 100644 --- a/gradle/multiplexor.gradle +++ b/gradle/multiplexor.gradle @@ -56,14 +56,15 @@ gradle.projectsEvaluated { : target[loaderPins[loader]].toString() String displayedPin = pin.startsWith(minecraft + '-') ? pin.substring(minecraft.length() + 1) : pin String artifactName = "Iris v${project.version} [${label}] ${minecraft}+${displayedPin}.jar" + boolean forge = loader == 'forge' buildTargets.add([ id: "${loader}-${minecraft}".toString(), tasks: [":verify${label}${minecraft.replace('.', '_')}".toString()], - arguments: ['-PmoddedBuildParallelism=1', '-PmoddedTestForks=1', + arguments: ['-PmoddedBuildParallelism=1', "-PmoddedTestForks=${forge ? 2 : 1}".toString(), '-PmultiplexorSandbox=true'], java: 25, - memoryMiB: 8192, - workers: 2, + memoryMiB: forge ? 16384 : 8192, + workers: forge ? 8 : 2, dependsOn: [], artifacts: [[path: "adapters/${loader}/build/${minecraft}/libs/${artifactName}".toString(), role: 'runtime', platforms: [loader], minecraftVersions: [minecraft]]]