From be9698483f8e7891b5c2d562eaeac9dd3edbf9d8 Mon Sep 17 00:00:00 2001 From: Dante Niewenhuis Date: Fri, 24 Jan 2025 13:54:59 +0100 Subject: Added Fragment scaling (#296) * Added maxCpuDemand to TraceWorkload, don't know if this will be needed so might remove later. Updated SimTraceWorkload to properly handle creating checkpoints Fixed a bug with the updatedConsumers in the FlowDistributor Implemented a first version of scaling the runtime of fragments. * small update * updated tests to reflect the changes in the checkpointing model * Updated the checkpointing tests to reflect the changes made * updated wrapper-validation-action * Applied spotless --- .../opendc/compute/workload/ComputeWorkloadLoader.kt | 19 +++++++++++++++---- .../main/kotlin/org/opendc/compute/workload/Task.kt | 2 +- 2 files changed, 16 insertions(+), 5 deletions(-) (limited to 'opendc-compute/opendc-compute-workload/src') diff --git a/opendc-compute/opendc-compute-workload/src/main/kotlin/org/opendc/compute/workload/ComputeWorkloadLoader.kt b/opendc-compute/opendc-compute-workload/src/main/kotlin/org/opendc/compute/workload/ComputeWorkloadLoader.kt index 655bacb9..2b8b589f 100644 --- a/opendc-compute/opendc-compute-workload/src/main/kotlin/org/opendc/compute/workload/ComputeWorkloadLoader.kt +++ b/opendc-compute/opendc-compute-workload/src/main/kotlin/org/opendc/compute/workload/ComputeWorkloadLoader.kt @@ -23,7 +23,9 @@ package org.opendc.compute.workload import mu.KotlinLogging -import org.opendc.simulator.compute.workload.TraceWorkload +import org.opendc.simulator.compute.workload.trace.TraceWorkload +import org.opendc.simulator.compute.workload.trace.scaling.NoDelayScaling +import org.opendc.simulator.compute.workload.trace.scaling.ScalingPolicy import org.opendc.trace.Trace import org.opendc.trace.conv.TABLE_RESOURCES import org.opendc.trace.conv.TABLE_RESOURCE_STATES @@ -53,6 +55,7 @@ public class ComputeWorkloadLoader( private val checkpointInterval: Long = 0L, private val checkpointDuration: Long = 0L, private val checkpointIntervalScaling: Double = 1.0, + private val scalingPolicy: ScalingPolicy = NoDelayScaling(), ) : WorkloadLoader(subMissionTime) { /** * The logger for this instance. @@ -84,7 +87,10 @@ public class ComputeWorkloadLoader( val cores = reader.getInt(coresCol) val cpuUsage = reader.getDouble(usageCol) - val builder = fragments.computeIfAbsent(id) { Builder(checkpointInterval, checkpointDuration, checkpointIntervalScaling) } + val builder = + fragments.computeIfAbsent( + id, + ) { Builder(checkpointInterval, checkpointDuration, checkpointIntervalScaling, scalingPolicy) } builder.add(durationMs, cpuUsage, cores) } @@ -178,7 +184,12 @@ public class ComputeWorkloadLoader( /** * A builder for a VM trace. */ - private class Builder(checkpointInterval: Long, checkpointDuration: Long, checkpointIntervalScaling: Double) { + private class Builder( + checkpointInterval: Long, + checkpointDuration: Long, + checkpointIntervalScaling: Double, + scalingPolicy: ScalingPolicy, + ) { /** * The total load of the trace. */ @@ -187,7 +198,7 @@ public class ComputeWorkloadLoader( /** * The internal builder for the trace. */ - private val builder = TraceWorkload.builder(checkpointInterval, checkpointDuration, checkpointIntervalScaling) + private val builder = TraceWorkload.builder(checkpointInterval, checkpointDuration, checkpointIntervalScaling, scalingPolicy) /** * Add a fragment to the trace. diff --git a/opendc-compute/opendc-compute-workload/src/main/kotlin/org/opendc/compute/workload/Task.kt b/opendc-compute/opendc-compute-workload/src/main/kotlin/org/opendc/compute/workload/Task.kt index 60be9299..7a5089b9 100644 --- a/opendc-compute/opendc-compute-workload/src/main/kotlin/org/opendc/compute/workload/Task.kt +++ b/opendc-compute/opendc-compute-workload/src/main/kotlin/org/opendc/compute/workload/Task.kt @@ -22,7 +22,7 @@ package org.opendc.compute.workload -import org.opendc.simulator.compute.workload.TraceWorkload +import org.opendc.simulator.compute.workload.trace.TraceWorkload import java.time.Instant import java.util.UUID -- cgit v1.2.3