summaryrefslogtreecommitdiff
path: root/opendc-compute/opendc-compute-workload/src/main/kotlin
diff options
context:
space:
mode:
authorDante Niewenhuis <d.niewenhuis@hotmail.com>2025-07-16 16:56:28 +0200
committerGitHub <noreply@github.com>2025-07-16 16:56:28 +0200
commit0c0cf25616771cd40a9e401edcba4a5e5016f76e (patch)
tree90fa673939a6c4c53900a6aa6eef073ad2957e34 /opendc-compute/opendc-compute-workload/src/main/kotlin
parent089c449762950b4322c04f73ef7fe0e10af615df (diff)
Added Workflows (#359)
* Implemented Workflows for OpenDC
Diffstat (limited to 'opendc-compute/opendc-compute-workload/src/main/kotlin')
-rw-r--r--opendc-compute/opendc-compute-workload/src/main/kotlin/org/opendc/compute/workload/ComputeWorkloadLoader.kt18
-rw-r--r--opendc-compute/opendc-compute-workload/src/main/kotlin/org/opendc/compute/workload/Task.kt8
-rw-r--r--opendc-compute/opendc-compute-workload/src/main/kotlin/org/opendc/compute/workload/WorkloadLoader.kt4
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" }