From 5a365dbc068f2a8cdfa9813c39cc84bb30e15637 Mon Sep 17 00:00:00 2001 From: Dante Niewenhuis Date: Fri, 25 Oct 2024 13:32:41 +0200 Subject: Rewrote the FlowEngine (#256) * Removed unused components. Updated tests. Improved checkpointing model Improved model, started with SimPowerSource implemented FailureModels and Checkpointing First working version midway commit first update All simulation are now run with a single CPU and single MemoryUnit. multi CPUs are combined into one. This is for performance and explainability. * fixed merge conflicts * Updated M3SA paths. * Fixed small typo --- .../kotlin/org/opendc/web/runner/OpenDCRunner.kt | 27 +++++++++++++--------- .../web/runner/internal/WebComputeMonitor.kt | 12 +++++----- 2 files changed, 22 insertions(+), 17 deletions(-) (limited to 'opendc-web/opendc-web-runner/src/main') diff --git a/opendc-web/opendc-web-runner/src/main/kotlin/org/opendc/web/runner/OpenDCRunner.kt b/opendc-web/opendc-web-runner/src/main/kotlin/org/opendc/web/runner/OpenDCRunner.kt index af9d5529..2dd0c20f 100644 --- a/opendc-web/opendc-web-runner/src/main/kotlin/org/opendc/web/runner/OpenDCRunner.kt +++ b/opendc-web/opendc-web-runner/src/main/kotlin/org/opendc/web/runner/OpenDCRunner.kt @@ -25,22 +25,21 @@ package org.opendc.web.runner import mu.KotlinLogging import org.opendc.compute.failure.prefab.FailurePrefab import org.opendc.compute.failure.prefab.createFailureModelPrefab -import org.opendc.compute.service.ComputeService -import org.opendc.compute.service.scheduler.createComputeScheduler import org.opendc.compute.simulator.provisioner.Provisioner import org.opendc.compute.simulator.provisioner.registerComputeMonitor import org.opendc.compute.simulator.provisioner.setupComputeService import org.opendc.compute.simulator.provisioner.setupHosts +import org.opendc.compute.simulator.scheduler.createComputeScheduler +import org.opendc.compute.simulator.service.ComputeService import org.opendc.compute.topology.specs.HostSpec import org.opendc.compute.workload.ComputeWorkloadLoader import org.opendc.compute.workload.sampleByLoad import org.opendc.compute.workload.trace import org.opendc.experiments.base.runner.replay -import org.opendc.simulator.compute.SimPsuFactories -import org.opendc.simulator.compute.model.Cpu -import org.opendc.simulator.compute.model.MachineModel -import org.opendc.simulator.compute.model.MemoryUnit -import org.opendc.simulator.compute.power.CpuPowerModels +import org.opendc.simulator.compute.cpu.CpuPowerModels +import org.opendc.simulator.compute.models.CpuModel +import org.opendc.simulator.compute.models.MachineModel +import org.opendc.simulator.compute.models.MemoryUnit import org.opendc.simulator.kotlin.runSimulation import org.opendc.web.proto.runner.Job import org.opendc.web.proto.runner.Scenario @@ -86,7 +85,7 @@ public class OpenDCRunner( /** * Helper class to load the workloads. */ - private val workloadLoader = ComputeWorkloadLoader(tracePath) + private val workloadLoader = ComputeWorkloadLoader(tracePath, 0L, 0L, 0.0) /** * The [ForkJoinPool] that is used to execute the simulation jobs. @@ -295,7 +294,6 @@ public class OpenDCRunner( "Scheduler " + "Success=${serviceMetrics.attemptsSuccess} " + "Failure=${serviceMetrics.attemptsFailure} " + - "Error=${serviceMetrics.attemptsError} " + "Pending=${serviceMetrics.tasksPending} " + "Active=${serviceMetrics.tasksActive}" } @@ -325,7 +323,14 @@ public class OpenDCRunner( val processors = machine.cpus.map { cpu -> - Cpu(0, cpu.numberOfCores, cpu.clockRateMhz, "Intel", "amd64", cpu.name) + CpuModel( + 0, + cpu.numberOfCores, + cpu.clockRateMhz.toFloat(), + "Intel", + "amd64", + cpu.name, + ) } val memoryUnits = @@ -347,7 +352,7 @@ public class OpenDCRunner( "node-$clusterId-$position", mapOf("cluster" to clusterId), MachineModel(processors, memoryUnits[0]), - SimPsuFactories.simple(powerModel), + powerModel, ) res += spec diff --git a/opendc-web/opendc-web-runner/src/main/kotlin/org/opendc/web/runner/internal/WebComputeMonitor.kt b/opendc-web/opendc-web-runner/src/main/kotlin/org/opendc/web/runner/internal/WebComputeMonitor.kt index 96b42ac8..7e09e9e9 100644 --- a/opendc-web/opendc-web-runner/src/main/kotlin/org/opendc/web/runner/internal/WebComputeMonitor.kt +++ b/opendc-web/opendc-web-runner/src/main/kotlin/org/opendc/web/runner/internal/WebComputeMonitor.kt @@ -22,11 +22,11 @@ package org.opendc.web.runner.internal -import org.opendc.compute.telemetry.ComputeMonitor -import org.opendc.compute.telemetry.table.HostTableReader -import org.opendc.compute.telemetry.table.ServiceData -import org.opendc.compute.telemetry.table.ServiceTableReader -import org.opendc.compute.telemetry.table.toServiceData +import org.opendc.compute.simulator.telemetry.ComputeMonitor +import org.opendc.compute.simulator.telemetry.table.HostTableReader +import org.opendc.compute.simulator.telemetry.table.ServiceData +import org.opendc.compute.simulator.telemetry.table.ServiceTableReader +import org.opendc.compute.simulator.telemetry.table.toServiceData import kotlin.math.roundToLong /** @@ -107,7 +107,7 @@ internal class WebComputeMonitor : ComputeMonitor { serviceData.tasksTotal, serviceData.tasksPending, serviceData.tasksTotal - serviceData.tasksPending - serviceData.tasksActive, - serviceData.attemptsError + serviceData.attemptsFailure, + serviceData.attemptsTerminated, ) } -- cgit v1.2.3