diff options
| author | Dante Niewenhuis <d.niewenhuis@hotmail.com> | 2024-11-29 13:54:31 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-11-29 13:54:31 +0100 |
| commit | a49a3878758438fe8d04bf4c4d3e3ffc5873aace (patch) | |
| tree | d89f2fcc058a9b23b798c29402f8b8fd69beca41 /opendc-compute/opendc-compute-simulator/src/main | |
| parent | 124b40ce36fa03c5275e12ff5a020fc40fe5fd5a (diff) | |
Multiplexer update (#278)
* Fixed the Multiplexer.java to properly divide the supply over the different consumers.
Fixed a bug where fragments were being loaded in reversed order.
* Optimized the Multiplexer.java, by only updating the supply of the consumer that updated its demand when possible.
Diffstat (limited to 'opendc-compute/opendc-compute-simulator/src/main')
5 files changed, 41 insertions, 7 deletions
diff --git a/opendc-compute/opendc-compute-simulator/src/main/java/org/opendc/compute/simulator/telemetry/GuestCpuStats.java b/opendc-compute/opendc-compute-simulator/src/main/java/org/opendc/compute/simulator/telemetry/GuestCpuStats.java index 97202104..61c4145c 100644 --- a/opendc-compute/opendc-compute-simulator/src/main/java/org/opendc/compute/simulator/telemetry/GuestCpuStats.java +++ b/opendc-compute/opendc-compute-simulator/src/main/java/org/opendc/compute/simulator/telemetry/GuestCpuStats.java @@ -40,4 +40,5 @@ public record GuestCpuStats( long lostTime, double capacity, double usage, + double demand, double utilization) {} diff --git a/opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/internal/Guest.kt b/opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/internal/Guest.kt index 3a923222..3a2416a8 100644 --- a/opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/internal/Guest.kt +++ b/opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/internal/Guest.kt @@ -233,6 +233,7 @@ public class Guest( counters.cpuLostTime / 1000L, counters.cpuCapacity, counters.cpuSupply, + counters.cpuDemand, counters.cpuSupply / cpuLimit, ) } 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 6658e444..cf315947 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 @@ -97,6 +97,16 @@ public object DfltTaskExportColumns { field = Types.required(FLOAT).named("cpu_limit"), ) { it.cpuLimit } + public val CPU_USAGE: ExportColumn<TaskTableReader> = + ExportColumn( + field = Types.required(FLOAT).named("cpu_usage"), + ) { it.cpuUsage } + + public val CPU_DEMAND: ExportColumn<TaskTableReader> = + ExportColumn( + field = Types.required(FLOAT).named("cpu_demand"), + ) { it.cpuDemand } + public val CPU_TIME_ACTIVE: ExportColumn<TaskTableReader> = ExportColumn( field = Types.required(INT64).named("cpu_time_active"), diff --git a/opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/telemetry/table/TaskTableReader.kt b/opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/telemetry/table/TaskTableReader.kt index 50ffa5fc..0a752e75 100644 --- a/opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/telemetry/table/TaskTableReader.kt +++ b/opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/telemetry/table/TaskTableReader.kt @@ -100,6 +100,16 @@ public interface TaskTableReader : Exportable { public val cpuLimit: Double /** + * The CPU given to this task (in MHz). + */ + public val cpuUsage: Double + + /** + * The CPU demanded by this task (in MHz). + */ + public val cpuDemand: Double + + /** * The duration (in seconds) that a CPU was active in the task. */ public val cpuActiveTime: Long diff --git a/opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/telemetry/table/TaskTableReaderImpl.kt b/opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/telemetry/table/TaskTableReaderImpl.kt index 5a0897f7..edcc8b20 100644 --- a/opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/telemetry/table/TaskTableReaderImpl.kt +++ b/opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/telemetry/table/TaskTableReaderImpl.kt @@ -55,6 +55,8 @@ public class TaskTableReaderImpl( _timestampAbsolute = table.timestampAbsolute _cpuLimit = table.cpuLimit + _cpuDemand = table.cpuDemand + _cpuUsage = table.cpuUsage _cpuActiveTime = table.cpuActiveTime _cpuIdleTime = table.cpuIdleTime _cpuStealTime = table.cpuStealTime @@ -128,6 +130,14 @@ public class TaskTableReaderImpl( get() = _cpuLimit private var _cpuLimit = 0.0 + override val cpuUsage: Double + get() = _cpuUsage + private var _cpuUsage = 0.0 + + override val cpuDemand: Double + get() = _cpuDemand + private var _cpuDemand = 0.0 + override val cpuActiveTime: Long get() = _cpuActiveTime - previousCpuActiveTime private var _cpuActiveTime = 0L @@ -181,14 +191,16 @@ public class TaskTableReaderImpl( _timestampAbsolute = now + startTime _cpuLimit = cpuStats?.capacity ?: 0.0 - _cpuActiveTime = cpuStats?.activeTime ?: 0 - _cpuIdleTime = cpuStats?.idleTime ?: 0 - _cpuStealTime = cpuStats?.stealTime ?: 0 - _cpuLostTime = cpuStats?.lostTime ?: 0 - _uptime = sysStats?.uptime?.toMillis() ?: 0 - _downtime = sysStats?.downtime?.toMillis() ?: 0 + _cpuDemand = cpuStats?.demand ?: 0.0 + _cpuUsage = cpuStats?.usage ?: 0.0 + _cpuActiveTime = cpuStats?.activeTime ?: _cpuActiveTime + _cpuIdleTime = cpuStats?.idleTime ?: _cpuIdleTime + _cpuStealTime = cpuStats?.stealTime ?: _cpuStealTime + _cpuLostTime = cpuStats?.lostTime ?: _cpuLostTime + _uptime = sysStats?.uptime?.toMillis() ?: _uptime + _downtime = sysStats?.downtime?.toMillis() ?: _downtime _provisionTime = task.launchedAt - _bootTime = sysStats?.bootTime + _bootTime = sysStats?.bootTime ?: _bootTime _creationTime = task.createdAt _finishTime = task.finishedAt |
