diff options
Diffstat (limited to 'opendc-compute/opendc-compute-simulator/src/main/kotlin')
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 |
