diff options
| author | Sacheendra Talluri <sacheendra.t@gmail.com> | 2025-03-20 10:16:46 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-03-20 10:16:46 +0100 |
| commit | 1e35c61cd31b8bfb33a6ccbb46b08c0466518e6c (patch) | |
| tree | 261c84148cd045246bdc2ad7aa3c41524356b699 /opendc-compute/opendc-compute-workload | |
| parent | 6211b887b68b3ebc9245fada1c0f36725955b052 (diff) | |
Adds load shifting over time (#319)
* Start time shifting
* Existing experiments work with new columns
* Remove unused traces dir
* Update java to 21 LTS and jacoco to be compatible
* Minimal working timeshifting
* Timeshift scheduler linked as carbon receiver
* Add basic tests for timeshift scheduler
* Run spotless apply
* Modify tarce format tests to support new fields
* Change all mentions of java 19 to 21
* Add a deferAll option to workload to make all tasks deferrable
* Run spotless apply
* Copy traces from resources in web dockerfile
Diffstat (limited to 'opendc-compute/opendc-compute-workload')
3 files changed, 17 insertions, 1 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 cbff5fb9..8e774acb 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 @@ -31,9 +31,11 @@ import org.opendc.trace.conv.TABLE_RESOURCES import org.opendc.trace.conv.TABLE_RESOURCE_STATES import org.opendc.trace.conv.resourceCpuCapacity import org.opendc.trace.conv.resourceCpuCount +import org.opendc.trace.conv.resourceDeadline import org.opendc.trace.conv.resourceDuration import org.opendc.trace.conv.resourceID import org.opendc.trace.conv.resourceMemCapacity +import org.opendc.trace.conv.resourceNature import org.opendc.trace.conv.resourceStateCpuUsage import org.opendc.trace.conv.resourceStateDuration import org.opendc.trace.conv.resourceSubmissionTime @@ -56,6 +58,7 @@ public class ComputeWorkloadLoader( private val checkpointDuration: Long = 0L, private val checkpointIntervalScaling: Double = 1.0, private val scalingPolicy: ScalingPolicy = NoDelayScaling(), + private val deferAll: Boolean = false, ) : WorkloadLoader(subMissionTime) { /** * The logger for this instance. @@ -115,6 +118,8 @@ public class ComputeWorkloadLoader( val cpuCountCol = reader.resolve(resourceCpuCount) val cpuCapacityCol = reader.resolve(resourceCpuCapacity) val memCol = reader.resolve(resourceMemCapacity) + val natureCol = reader.resolve(resourceNature) + val deadlineCol = reader.resolve(resourceDeadline) var counter = 0 val entries = mutableListOf<Task>() @@ -132,6 +137,12 @@ public class ComputeWorkloadLoader( val cpuCapacity = reader.getDouble(cpuCapacityCol) val memCapacity = reader.getDouble(memCol) / 1000.0 // Convert from KB to MB val uid = UUID.nameUUIDFromBytes("$id-${counter++}".toByteArray()) + var nature = reader.getString(natureCol) + var deadline = reader.getLong(deadlineCol) + if (deferAll) { + nature = "deferrable" + deadline = submissionTime + (3 * duration) + } val builder = fragments.getValue(id) // Get all fragments related to this VM val totalLoad = builder.totalLoad @@ -146,6 +157,8 @@ public class ComputeWorkloadLoader( totalLoad, submissionTime, duration, + nature, + deadline, builder.build(), ), ) 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 d32c84f6..787f271e 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 @@ -46,5 +46,7 @@ public data class Task( val totalLoad: Double, var submissionTime: Long, val duration: Long, - var trace: TraceWorkload, + val nature: String?, + var deadline: Long, + val trace: TraceWorkload, ) diff --git a/opendc-compute/opendc-compute-workload/src/main/kotlin/org/opendc/compute/workload/WorkloadLoader.kt b/opendc-compute/opendc-compute-workload/src/main/kotlin/org/opendc/compute/workload/WorkloadLoader.kt index 6b9c3753..c00bc768 100644 --- a/opendc-compute/opendc-compute-workload/src/main/kotlin/org/opendc/compute/workload/WorkloadLoader.kt +++ b/opendc-compute/opendc-compute-workload/src/main/kotlin/org/opendc/compute/workload/WorkloadLoader.kt @@ -40,6 +40,7 @@ public abstract class WorkloadLoader(private val submissionTime: String? = null) for (task in workload) { task.submissionTime += timeShift + task.deadline = if (task.deadline == -1L) -1L else task.deadline + timeShift } } |
