diff options
| author | Dante Niewenhuis <d.niewenhuis@hotmail.com> | 2025-01-24 13:54:59 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-01-24 13:54:59 +0100 |
| commit | be9698483f8e7891b5c2d562eaeac9dd3edbf9d8 (patch) | |
| tree | 60b27e2ff80f76c5aa7736ca64f2ae0580348930 /opendc-compute/opendc-compute-workload/src | |
| parent | bb945c2fdd7b20898e3dfccbac7da2a427418216 (diff) | |
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
Diffstat (limited to 'opendc-compute/opendc-compute-workload/src')
2 files changed, 16 insertions, 5 deletions
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 |
