From c7b473279714cf83dd8a4bca0d3c9a08511d021a Mon Sep 17 00:00:00 2001 From: Dante Niewenhuis Date: Fri, 9 Jan 2026 17:00:50 +0100 Subject: Fixed a bug that caused tasked to run much longer when supply was changed during runtime. (#386) --- .../java/org/opendc/compute/simulator/service/ComputeService.java | 2 +- .../org/opendc/simulator/compute/workload/trace/SimTraceWorkload.java | 4 ++-- .../org/opendc/simulator/compute/workload/trace/TraceWorkload.java | 2 ++ 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/opendc-compute/opendc-compute-simulator/src/main/java/org/opendc/compute/simulator/service/ComputeService.java b/opendc-compute/opendc-compute-simulator/src/main/java/org/opendc/compute/simulator/service/ComputeService.java index f4adaac1..8ff78dae 100644 --- a/opendc-compute/opendc-compute-simulator/src/main/java/org/opendc/compute/simulator/service/ComputeService.java +++ b/opendc-compute/opendc-compute-simulator/src/main/java/org/opendc/compute/simulator/service/ComputeService.java @@ -591,7 +591,7 @@ public final class ComputeService implements AutoCloseable, CarbonReceiver { public static class Builder { private final Dispatcher dispatcher; private final ComputeScheduler computeScheduler; - private Duration quantum = Duration.ofSeconds(1); + private Duration quantum = Duration.ofMillis(1); private int maxNumFailures = 10; Builder(Dispatcher dispatcher, ComputeScheduler computeScheduler) { diff --git a/opendc-simulator/opendc-simulator-compute/src/main/java/org/opendc/simulator/compute/workload/trace/SimTraceWorkload.java b/opendc-simulator/opendc-simulator-compute/src/main/java/org/opendc/simulator/compute/workload/trace/SimTraceWorkload.java index 5e8744d0..fd1a356e 100644 --- a/opendc-simulator/opendc-simulator-compute/src/main/java/org/opendc/simulator/compute/workload/trace/SimTraceWorkload.java +++ b/opendc-simulator/opendc-simulator-compute/src/main/java/org/opendc/simulator/compute/workload/trace/SimTraceWorkload.java @@ -329,7 +329,6 @@ public class SimTraceWorkload extends SimWorkload implements FlowConsumer { */ @Override public void stopWorkload() { - // If the workload is stopped due to an error or failure, calculate the wasted time for bookkeeping. if (this.totalRemainingWork > 0.0 || !this.remainingFragments.isEmpty()) { // Failure @@ -462,6 +461,7 @@ public class SimTraceWorkload extends SimWorkload implements FlowConsumer { */ @Override public void handleIncomingSupply(FlowEdge supplierEdge, double newSupply, ResourceType resourceType) { + // for cases where equal share or fixed share is used and the resource is provided despite not being used if (!this.usedResourceTypes.contains(resourceType)) { return; @@ -473,8 +473,8 @@ public class SimTraceWorkload extends SimWorkload implements FlowConsumer { this.resourcesSupplied[resourceType.ordinal()] = newSupply; long now = this.clock.millis(); - this.startOfFragment = now; long passedTime = getPassedTime(now); + this.startOfFragment = now; this.updateRemainingWork(passedTime); this.updateRemainingTime(); diff --git a/opendc-simulator/opendc-simulator-compute/src/main/java/org/opendc/simulator/compute/workload/trace/TraceWorkload.java b/opendc-simulator/opendc-simulator-compute/src/main/java/org/opendc/simulator/compute/workload/trace/TraceWorkload.java index 161a8041..6cf02df8 100644 --- a/opendc-simulator/opendc-simulator-compute/src/main/java/org/opendc/simulator/compute/workload/trace/TraceWorkload.java +++ b/opendc-simulator/opendc-simulator-compute/src/main/java/org/opendc/simulator/compute/workload/trace/TraceWorkload.java @@ -190,6 +190,8 @@ public class TraceWorkload implements Workload { this.checkpointIntervalScaling = checkpointIntervalScaling; this.scalingPolicy = scalingPolicy; this.taskId = taskId; + + this.resourceTypes[ResourceType.CPU.ordinal()] = ResourceType.CPU; } /** -- cgit v1.2.3