From ea45406229c8349e44c88f4112fe25435b59e4e9 Mon Sep 17 00:00:00 2001 From: Dante Niewenhuis Date: Mon, 24 Mar 2025 14:07:01 +0100 Subject: Added embodied carbon to hosts (#326) --- .../simulator/compute/workload/VirtualMachine.java | 1 - .../compute/workload/trace/SimTraceWorkload.java | 5 +++++ .../compute/workload/trace/TraceWorkload.java | 23 +++++++++++++++++----- .../workload/trace/scaling/NoDelayScaling.java | 6 +++--- 4 files changed, 26 insertions(+), 9 deletions(-) (limited to 'opendc-simulator/opendc-simulator-compute/src') diff --git a/opendc-simulator/opendc-simulator-compute/src/main/java/org/opendc/simulator/compute/workload/VirtualMachine.java b/opendc-simulator/opendc-simulator-compute/src/main/java/org/opendc/simulator/compute/workload/VirtualMachine.java index 49326ba5..7632b503 100644 --- a/opendc-simulator/opendc-simulator-compute/src/main/java/org/opendc/simulator/compute/workload/VirtualMachine.java +++ b/opendc-simulator/opendc-simulator-compute/src/main/java/org/opendc/simulator/compute/workload/VirtualMachine.java @@ -194,7 +194,6 @@ public final class VirtualMachine extends SimWorkload implements FlowSupplier { } this.closeNode(); - if (this.completion != null) { this.completion.accept(stopWorkloadCause); this.completion = null; 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 457a0807..9e7f170c 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 @@ -52,6 +52,8 @@ public class SimTraceWorkload extends SimWorkload implements FlowConsumer { private final ScalingPolicy scalingPolicy; + private final String taskName; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Basic Getters and Setters //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -91,6 +93,9 @@ public class SimTraceWorkload extends SimWorkload implements FlowConsumer { this.scalingPolicy = workload.getScalingPolicy(); this.remainingFragments = new LinkedList<>(workload.getFragments()); this.fragmentIndex = 0; + this.taskName = workload.getTaskName(); + + this.startOfFragment = this.clock.millis(); new FlowEdge(this, supplier); } 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 4a06d019..9c31a833 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 @@ -39,6 +39,12 @@ public class TraceWorkload implements Workload { private final double maxCpuDemand; private final int maxCoreCount; + public String getTaskName() { + return taskName; + } + + private final String taskName; + public ScalingPolicy getScalingPolicy() { return scalingPolicy; } @@ -50,12 +56,14 @@ public class TraceWorkload implements Workload { long checkpointInterval, long checkpointDuration, double checkpointIntervalScaling, - ScalingPolicy scalingPolicy) { + ScalingPolicy scalingPolicy, + String taskName) { this.fragments = fragments; this.checkpointInterval = checkpointInterval; this.checkpointDuration = checkpointDuration; this.checkpointIntervalScaling = checkpointIntervalScaling; this.scalingPolicy = scalingPolicy; + this.taskName = taskName; // TODO: remove if we decide not to use it. this.maxCpuDemand = fragments.stream() @@ -120,8 +128,9 @@ public class TraceWorkload implements Workload { long checkpointInterval, long checkpointDuration, double checkpointIntervalScaling, - ScalingPolicy scalingPolicy) { - return new Builder(checkpointInterval, checkpointDuration, checkpointIntervalScaling, scalingPolicy); + ScalingPolicy scalingPolicy, + String taskName) { + return new Builder(checkpointInterval, checkpointDuration, checkpointIntervalScaling, scalingPolicy, taskName); } public static final class Builder { @@ -130,6 +139,7 @@ public class TraceWorkload implements Workload { private final long checkpointDuration; private final double checkpointIntervalScaling; private final ScalingPolicy scalingPolicy; + private final String taskName; /** * Construct a new {@link Builder} instance. @@ -138,12 +148,14 @@ public class TraceWorkload implements Workload { long checkpointInterval, long checkpointDuration, double checkpointIntervalScaling, - ScalingPolicy scalingPolicy) { + ScalingPolicy scalingPolicy, + String taskName) { this.fragments = new ArrayList<>(); this.checkpointInterval = checkpointInterval; this.checkpointDuration = checkpointDuration; this.checkpointIntervalScaling = checkpointIntervalScaling; this.scalingPolicy = scalingPolicy; + this.taskName = taskName; } /** @@ -166,7 +178,8 @@ public class TraceWorkload implements Workload { this.checkpointInterval, this.checkpointDuration, this.checkpointIntervalScaling, - this.scalingPolicy); + this.scalingPolicy, + this.taskName); } } } diff --git a/opendc-simulator/opendc-simulator-compute/src/main/java/org/opendc/simulator/compute/workload/trace/scaling/NoDelayScaling.java b/opendc-simulator/opendc-simulator-compute/src/main/java/org/opendc/simulator/compute/workload/trace/scaling/NoDelayScaling.java index 4230bb55..d0c1cc2e 100644 --- a/opendc-simulator/opendc-simulator-compute/src/main/java/org/opendc/simulator/compute/workload/trace/scaling/NoDelayScaling.java +++ b/opendc-simulator/opendc-simulator-compute/src/main/java/org/opendc/simulator/compute/workload/trace/scaling/NoDelayScaling.java @@ -32,16 +32,16 @@ package org.opendc.simulator.compute.workload.trace.scaling; public class NoDelayScaling implements ScalingPolicy { @Override public double getFinishedWork(double cpuFreqDemand, double cpuFreqSupplied, long passedTime) { - return cpuFreqDemand * passedTime; + return passedTime; } @Override public long getRemainingDuration(double cpuFreqDemand, double cpuFreqSupplied, double remainingWork) { - return (long) (remainingWork / cpuFreqDemand); + return (long) remainingWork; } @Override public double getRemainingWork(double cpuFreqDemand, long duration) { - return cpuFreqDemand * duration; + return duration; } } -- cgit v1.2.3