summaryrefslogtreecommitdiff
path: root/opendc-compute/opendc-compute-simulator/src/main/kotlin
diff options
context:
space:
mode:
authorDante Niewenhuis <d.niewenhuis@hotmail.com>2025-11-13 19:44:43 +0100
committerGitHub <noreply@github.com>2025-11-13 19:44:43 +0100
commit90d4369183a420689fb1d48687a77ec677572433 (patch)
tree6b5bf9dbc1c55700620073a099ed22690e799526 /opendc-compute/opendc-compute-simulator/src/main/kotlin
parent71f63618fb83c8e19ae48d5dc4a6e3927031cc10 (diff)
Updated the checkpointModel and OnUpdate of SimTraceWorkload (#380)
Diffstat (limited to 'opendc-compute/opendc-compute-simulator/src/main/kotlin')
-rw-r--r--opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/scheduler/FilterScheduler.kt5
-rw-r--r--opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/telemetry/parquet/DfltTaskExportColumns.kt15
-rw-r--r--opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/telemetry/table/task/TaskTableReader.kt6
-rw-r--r--opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/telemetry/table/task/TaskTableReaderImpl.kt20
4 files changed, 46 insertions, 0 deletions
diff --git a/opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/scheduler/FilterScheduler.kt b/opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/scheduler/FilterScheduler.kt
index 3dab71b0..913060e5 100644
--- a/opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/scheduler/FilterScheduler.kt
+++ b/opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/scheduler/FilterScheduler.kt
@@ -22,6 +22,7 @@
package org.opendc.compute.simulator.scheduler
+import org.opendc.compute.simulator.host.HostState
import org.opendc.compute.simulator.scheduler.filters.HostFilter
import org.opendc.compute.simulator.scheduler.weights.HostWeigher
import org.opendc.compute.simulator.service.HostView
@@ -101,6 +102,10 @@ public class FilterScheduler(
}
override fun updateHost(hostView: HostView) {
+ if (hostView.host.getState() == HostState.ERROR) {
+ return
+ }
+
if (hostView.host.isEmpty()) {
setHostEmpty(hostView)
} else {
diff --git a/opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/telemetry/parquet/DfltTaskExportColumns.kt b/opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/telemetry/parquet/DfltTaskExportColumns.kt
index b88c75e6..96cb5f65 100644
--- a/opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/telemetry/parquet/DfltTaskExportColumns.kt
+++ b/opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/telemetry/parquet/DfltTaskExportColumns.kt
@@ -224,6 +224,21 @@ public object DfltTaskExportColumns {
return@ExportColumn Binary.fromString(it.taskState!!.name)
}
+ public val schedulingDelay: ExportColumn<TaskTableReader> =
+ ExportColumn(
+ field = Types.optional(INT64).named("scheduling_delay"),
+ ) { it.schedulingDelay }
+
+ public val failureDelay: ExportColumn<TaskTableReader> =
+ ExportColumn(
+ field = Types.optional(INT64).named("failure_delay"),
+ ) { it.failureDelay }
+
+ public val checkpointDelay: ExportColumn<TaskTableReader> =
+ ExportColumn(
+ field = Types.optional(INT64).named("checkpoint_delay"),
+ ) { it.checkpointDelay }
+
/**
* The columns that are always included in the output file.
*/
diff --git a/opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/telemetry/table/task/TaskTableReader.kt b/opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/telemetry/table/task/TaskTableReader.kt
index 1f18ee50..cef3d8be 100644
--- a/opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/telemetry/table/task/TaskTableReader.kt
+++ b/opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/telemetry/table/task/TaskTableReader.kt
@@ -169,6 +169,12 @@ public interface TaskTableReader : Exportable {
* The state of the task
*/
public val taskState: TaskState?
+
+ public val schedulingDelay: Long
+
+ public val failureDelay: Long
+
+ public val checkpointDelay: Long
}
// Loads the default export fields for deserialization whenever this file is loaded.
diff --git a/opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/telemetry/table/task/TaskTableReaderImpl.kt b/opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/telemetry/table/task/TaskTableReaderImpl.kt
index d4d5c7a6..be858e4f 100644
--- a/opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/telemetry/table/task/TaskTableReaderImpl.kt
+++ b/opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/telemetry/table/task/TaskTableReaderImpl.kt
@@ -82,6 +82,10 @@ public class TaskTableReaderImpl(
_finishTime = table.finishTime
_taskState = table.taskState
+
+ _schedulingDelay = table.schedulingDelay
+ _failureDelay = table.failureDelay
+ _checkpointDelay = table.checkpointDelay
}
/**
@@ -214,6 +218,18 @@ public class TaskTableReaderImpl(
get() = _taskState
private var _taskState: TaskState? = null
+ override val schedulingDelay: Long
+ get() = _schedulingDelay
+ private var _schedulingDelay: Long = 0L
+
+ override val failureDelay: Long
+ get() = _failureDelay
+ private var _failureDelay: Long = 0L
+
+ override val checkpointDelay: Long
+ get() = _checkpointDelay
+ private var _checkpointDelay: Long = 0L
+
/**
* Record the next cycle.
*/
@@ -257,6 +273,10 @@ public class TaskTableReaderImpl(
_scheduleTime = task.scheduledAt
_finishTime = task.finishedAt
+ _schedulingDelay = task.schedulingDelay
+ _failureDelay = task.workload.failureDelay()
+ _checkpointDelay = task.workload.checkpointDelay()
+
if (gpuStats != null) {
_gpuLimit = gpuStats.capacity
_gpuDemand = gpuStats.demand