diff options
| author | Dante Niewenhuis <d.niewenhuis@hotmail.com> | 2025-07-16 16:56:28 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-07-16 16:56:28 +0200 |
| commit | 0c0cf25616771cd40a9e401edcba4a5e5016f76e (patch) | |
| tree | 90fa673939a6c4c53900a6aa6eef073ad2957e34 /opendc-compute/opendc-compute-workload/src/main/kotlin | |
| parent | 089c449762950b4322c04f73ef7fe0e10af615df (diff) | |
Added Workflows (#359)
* Implemented Workflows for OpenDC
Diffstat (limited to 'opendc-compute/opendc-compute-workload/src/main/kotlin')
3 files changed, 20 insertions, 10 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 7599d4e1..3a0ee3e0 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 @@ -29,16 +29,17 @@ 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 +import org.opendc.trace.conv.resourceChildren 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.resourceGpuCapacity import org.opendc.trace.conv.resourceGpuCount -import org.opendc.trace.conv.resourceGpuMemCapacity import org.opendc.trace.conv.resourceID import org.opendc.trace.conv.resourceMemCapacity import org.opendc.trace.conv.resourceNature +import org.opendc.trace.conv.resourceParents import org.opendc.trace.conv.resourceStateCpuUsage import org.opendc.trace.conv.resourceStateDuration import org.opendc.trace.conv.resourceStateGpuUsage @@ -136,7 +137,8 @@ public class ComputeWorkloadLoader( val memCol = reader.resolve(resourceMemCapacity) val gpuCapacityCol = reader.resolve(resourceGpuCapacity) // Assuming GPU capacity is also present val gpuCoreCountCol = reader.resolve(resourceGpuCount) // Assuming GPU cores are also present - val gpuMemoryCol = reader.resolve(resourceGpuMemCapacity) // Assuming GPU memory is also present + val parentsCol = reader.resolve(resourceParents) + val childrenCol = reader.resolve(resourceChildren) val natureCol = reader.resolve(resourceNature) val deadlineCol = reader.resolve(resourceDeadline) @@ -166,6 +168,10 @@ public class ComputeWorkloadLoader( } val gpuCoreCount = reader.getInt(gpuCoreCountCol) // Default to 0 if not present val gpuMemory = 0L // currently not implemented + + val parents = reader.getSet(parentsCol, String::class.java) // No dependencies in the trace + val children = reader.getSet(childrenCol, String::class.java) // No dependencies in the trace + val uid = UUID.nameUUIDFromBytes("$id-${counter++}".toByteArray()) var nature = reader.getString(natureCol) var deadline = reader.getLong(deadlineCol) @@ -181,15 +187,17 @@ public class ComputeWorkloadLoader( Task( uid, id, + submissionTime, + duration, + parents!!, + children!!, cpuCount, cpuCapacity, + totalLoad, memCapacity.roundToLong(), gpuCoreCount, gpuUsage, gpuMemory, - 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 228b84ed..b1ba4545 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 @@ -40,15 +40,17 @@ import java.util.UUID public data class Task( val uid: UUID, val name: String, + var submissionTime: Long, + val duration: Long, + val parents: Set<String> = emptySet(), + val children: Set<String> = emptySet(), val cpuCount: Int, val cpuCapacity: Double, + val totalCpuLoad: Double, val memCapacity: Long, val gpuCount: Int = 0, val gpuCapacity: Double = 0.0, val gpuMemCapacity: Long = 0L, - val totalLoad: Double, - var submissionTime: Long, - val duration: Long, 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 fad4c512..c8b7ecc7 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 @@ -64,7 +64,7 @@ public abstract class WorkloadLoader(private val submissionTime: String? = null) val res = mutableListOf<Task>() - val totalLoad = workload.sumOf { it.totalLoad } + val totalLoad = workload.sumOf { it.totalCpuLoad } val desiredLoad = totalLoad * fraction var currentLoad = 0.0 @@ -72,7 +72,7 @@ public abstract class WorkloadLoader(private val submissionTime: String? = null) val entry = workload.random() res += entry - currentLoad += entry.totalLoad + currentLoad += entry.totalCpuLoad } logger.info { "Sampled ${workload.size} VMs (fraction $fraction) into subset of ${res.size} VMs" } |
