From f6932d264db5b2e185ec7ea7aaec84dfb83f8fe9 Mon Sep 17 00:00:00 2001 From: Fabian Mastenbroek Date: Sun, 31 Jul 2022 21:27:02 +0200 Subject: feat(web/runner): Automatically compute experiment parallelism This change updates the runner configuration to support specifying the parallelism as zero to let the runtime decide the appropriate number of threads based on the available CPU cores on the machine. --- .../org/opendc/web/runner/runtime/OpenDCRunnerRecorder.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'opendc-web/opendc-web-runner-quarkus/src/main/java/org/opendc/web/runner') diff --git a/opendc-web/opendc-web-runner-quarkus/src/main/java/org/opendc/web/runner/runtime/OpenDCRunnerRecorder.java b/opendc-web/opendc-web-runner-quarkus/src/main/java/org/opendc/web/runner/runtime/OpenDCRunnerRecorder.java index b243dbc3..c1f356bc 100644 --- a/opendc-web/opendc-web-runner-quarkus/src/main/java/org/opendc/web/runner/runtime/OpenDCRunnerRecorder.java +++ b/opendc-web/opendc-web-runner-quarkus/src/main/java/org/opendc/web/runner/runtime/OpenDCRunnerRecorder.java @@ -44,11 +44,19 @@ public class OpenDCRunnerRecorder { */ public RuntimeValue createRunner(OpenDCRunnerRuntimeConfig config) { URI apiUrl = URI.create(config.apiUrl); + + int parallelism = config.parallelism; + if (parallelism < 0) { + throw new IllegalArgumentException("Parallelism must be non-negative"); + } else if (parallelism == 0) { + parallelism = Math.min(1, Runtime.getRuntime().availableProcessors() - 1); + } + OpenDCRunnerClient client = new OpenDCRunnerClient(apiUrl, null); OpenDCRunner runner = new OpenDCRunner( client, new File(config.tracePath), - config.parallelism, + parallelism, config.jobTimeout, config.pollInterval, config.heartbeatInterval -- cgit v1.2.3