From 76c5d27618181c4ec9cf86085c65b5e69f5f9109 Mon Sep 17 00:00:00 2001 From: Fabian Mastenbroek Date: Fri, 2 Oct 2020 00:38:44 +0200 Subject: Add opendc-simulator-compute module This change adds an opendc-simulator-compute module which contains interfaces related to simulating compute workloads. For future changes, we intend to decouple the simulation part from the opendc-compute module. --- simulator/opendc-runner-web/build.gradle.kts | 2 +- .../opendc-runner-web/src/main/kotlin/org/opendc/runner/web/Main.kt | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) (limited to 'simulator/opendc-runner-web') diff --git a/simulator/opendc-runner-web/build.gradle.kts b/simulator/opendc-runner-web/build.gradle.kts index 7e81347c..594e8197 100644 --- a/simulator/opendc-runner-web/build.gradle.kts +++ b/simulator/opendc-runner-web/build.gradle.kts @@ -37,7 +37,7 @@ dependencies { implementation(project(":opendc-compute")) implementation(project(":opendc-format")) implementation(project(":opendc-experiments:opendc-experiments-sc20")) - implementation(project(":opendc-simulator")) + implementation(project(":opendc-simulator:opendc-simulator-core")) implementation("com.github.ajalt:clikt:2.8.0") implementation("io.github.microutils:kotlin-logging:1.7.10") diff --git a/simulator/opendc-runner-web/src/main/kotlin/org/opendc/runner/web/Main.kt b/simulator/opendc-runner-web/src/main/kotlin/org/opendc/runner/web/Main.kt index 67ec046a..2d4272ab 100644 --- a/simulator/opendc-runner-web/src/main/kotlin/org/opendc/runner/web/Main.kt +++ b/simulator/opendc-runner-web/src/main/kotlin/org/opendc/runner/web/Main.kt @@ -50,7 +50,6 @@ import org.opendc.experiments.sc20.trace.Sc20RawParquetTraceReader import org.opendc.format.trace.sc20.Sc20PerformanceInterferenceReader import org.opendc.simulator.utils.DelayControllerClockAdapter import java.io.File -import java.util.* import kotlin.random.Random private val logger = KotlinLogging.logger {} -- cgit v1.2.3 From 136c1b9ddc7bd9331d3552d681e9190fc6198271 Mon Sep 17 00:00:00 2001 From: Fabian Mastenbroek Date: Sat, 3 Oct 2020 17:41:59 +0200 Subject: Migrate codebase to opendc-simulator-compute This change updates the remainder of the codebase to use the opendc-simulator-compute module for the simulation of workloads. --- simulator/opendc-runner-web/build.gradle.kts | 1 + .../main/kotlin/org/opendc/runner/web/TopologyParser.kt | 16 ++++++++-------- 2 files changed, 9 insertions(+), 8 deletions(-) (limited to 'simulator/opendc-runner-web') diff --git a/simulator/opendc-runner-web/build.gradle.kts b/simulator/opendc-runner-web/build.gradle.kts index 594e8197..9e2c5277 100644 --- a/simulator/opendc-runner-web/build.gradle.kts +++ b/simulator/opendc-runner-web/build.gradle.kts @@ -38,6 +38,7 @@ dependencies { implementation(project(":opendc-format")) implementation(project(":opendc-experiments:opendc-experiments-sc20")) implementation(project(":opendc-simulator:opendc-simulator-core")) + implementation(project(":opendc-simulator:opendc-simulator-compute")) implementation("com.github.ajalt:clikt:2.8.0") implementation("io.github.microutils:kotlin-logging:1.7.10") diff --git a/simulator/opendc-runner-web/src/main/kotlin/org/opendc/runner/web/TopologyParser.kt b/simulator/opendc-runner-web/src/main/kotlin/org/opendc/runner/web/TopologyParser.kt index de9ece75..cdcf1b08 100644 --- a/simulator/opendc-runner-web/src/main/kotlin/org/opendc/runner/web/TopologyParser.kt +++ b/simulator/opendc-runner-web/src/main/kotlin/org/opendc/runner/web/TopologyParser.kt @@ -31,11 +31,8 @@ import com.mongodb.client.model.Projections import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch import org.bson.Document -import org.opendc.compute.core.MemoryUnit -import org.opendc.compute.core.ProcessingNode -import org.opendc.compute.core.ProcessingUnit import org.opendc.compute.metal.NODE_CLUSTER -import org.opendc.compute.metal.driver.SimpleBareMetalDriver +import org.opendc.compute.metal.driver.SimBareMetalDriver import org.opendc.compute.metal.power.LinearLoadPowerModel import org.opendc.compute.metal.service.ProvisioningService import org.opendc.compute.metal.service.SimpleProvisioningService @@ -44,6 +41,10 @@ import org.opendc.core.Platform import org.opendc.core.Zone import org.opendc.core.services.ServiceRegistry import org.opendc.format.environment.EnvironmentReader +import org.opendc.simulator.compute.SimMachineModel +import org.opendc.simulator.compute.model.MemoryUnit +import org.opendc.simulator.compute.model.ProcessingNode +import org.opendc.simulator.compute.model.ProcessingUnit import java.time.Clock import java.util.* @@ -55,7 +56,7 @@ public class TopologyParser(private val collection: MongoCollection, p * Parse the topology with the specified [id]. */ override suspend fun construct(coroutineScope: CoroutineScope, clock: Clock): Environment { - val nodes = mutableListOf() + val nodes = mutableListOf() val random = Random(0) for (machine in fetchMachines(id)) { @@ -81,14 +82,13 @@ public class TopologyParser(private val collection: MongoCollection, p ) } nodes.add( - SimpleBareMetalDriver( + SimBareMetalDriver( coroutineScope, clock, UUID(random.nextLong(), random.nextLong()), "node-$clusterId-$position", mapOf(NODE_CLUSTER to clusterId), - processors, - memoryUnits, + SimMachineModel(processors, memoryUnits), // For now we assume a simple linear load model with an idle draw of ~200W and a maximum // power draw of 350W. // Source: https://stackoverflow.com/questions/6128960 -- cgit v1.2.3 From 8aaeb93e81fc3c4689d42747f87734fc4732d030 Mon Sep 17 00:00:00 2001 From: Fabian Mastenbroek Date: Sun, 4 Oct 2020 17:55:26 +0200 Subject: Extract simulation-related code from OpenDC Compute (core) This change splits the opendc-compute module into two modules: 1. opendc-compute-core The interfaces and APIs that represent a IaaS platform. 2. opendc-compute-simulator The implementation of these interfaces using simulation components from opendc-simulator-compute. --- simulator/opendc-runner-web/build.gradle.kts | 2 +- .../src/main/kotlin/org/opendc/runner/web/Main.kt | 2 +- .../src/main/kotlin/org/opendc/runner/web/TopologyParser.kt | 10 +++++----- 3 files changed, 7 insertions(+), 7 deletions(-) (limited to 'simulator/opendc-runner-web') diff --git a/simulator/opendc-runner-web/build.gradle.kts b/simulator/opendc-runner-web/build.gradle.kts index 9e2c5277..cf437843 100644 --- a/simulator/opendc-runner-web/build.gradle.kts +++ b/simulator/opendc-runner-web/build.gradle.kts @@ -34,7 +34,7 @@ application { dependencies { api(project(":opendc-core")) - implementation(project(":opendc-compute")) + implementation(project(":opendc-compute:opendc-compute-simulator")) implementation(project(":opendc-format")) implementation(project(":opendc-experiments:opendc-experiments-sc20")) implementation(project(":opendc-simulator:opendc-simulator-core")) diff --git a/simulator/opendc-runner-web/src/main/kotlin/org/opendc/runner/web/Main.kt b/simulator/opendc-runner-web/src/main/kotlin/org/opendc/runner/web/Main.kt index 2d4272ab..ca500770 100644 --- a/simulator/opendc-runner-web/src/main/kotlin/org/opendc/runner/web/Main.kt +++ b/simulator/opendc-runner-web/src/main/kotlin/org/opendc/runner/web/Main.kt @@ -38,7 +38,7 @@ import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.test.TestCoroutineScope import mu.KotlinLogging import org.bson.Document -import org.opendc.compute.virt.service.allocation.* +import org.opendc.compute.simulator.allocation.* import org.opendc.experiments.sc20.experiment.attachMonitor import org.opendc.experiments.sc20.experiment.createFailureDomain import org.opendc.experiments.sc20.experiment.createProvisioner diff --git a/simulator/opendc-runner-web/src/main/kotlin/org/opendc/runner/web/TopologyParser.kt b/simulator/opendc-runner-web/src/main/kotlin/org/opendc/runner/web/TopologyParser.kt index cdcf1b08..244f2a3d 100644 --- a/simulator/opendc-runner-web/src/main/kotlin/org/opendc/runner/web/TopologyParser.kt +++ b/simulator/opendc-runner-web/src/main/kotlin/org/opendc/runner/web/TopologyParser.kt @@ -31,11 +31,11 @@ import com.mongodb.client.model.Projections import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch import org.bson.Document -import org.opendc.compute.metal.NODE_CLUSTER -import org.opendc.compute.metal.driver.SimBareMetalDriver -import org.opendc.compute.metal.power.LinearLoadPowerModel -import org.opendc.compute.metal.service.ProvisioningService -import org.opendc.compute.metal.service.SimpleProvisioningService +import org.opendc.compute.core.metal.NODE_CLUSTER +import org.opendc.compute.core.metal.service.ProvisioningService +import org.opendc.compute.core.metal.service.SimpleProvisioningService +import org.opendc.compute.simulator.SimBareMetalDriver +import org.opendc.compute.simulator.power.LinearLoadPowerModel import org.opendc.core.Environment import org.opendc.core.Platform import org.opendc.core.Zone -- cgit v1.2.3 From 374960cd15a2893a124c42975167f8bf6e45e868 Mon Sep 17 00:00:00 2001 From: Fabian Mastenbroek Date: Mon, 5 Oct 2020 12:57:31 +0200 Subject: Address compilation warnings --- .../opendc-runner-web/src/main/kotlin/org/opendc/runner/web/Main.kt | 3 +-- .../src/main/kotlin/org/opendc/runner/web/TopologyParser.kt | 1 - 2 files changed, 1 insertion(+), 3 deletions(-) (limited to 'simulator/opendc-runner-web') diff --git a/simulator/opendc-runner-web/src/main/kotlin/org/opendc/runner/web/Main.kt b/simulator/opendc-runner-web/src/main/kotlin/org/opendc/runner/web/Main.kt index ca500770..26577ef2 100644 --- a/simulator/opendc-runner-web/src/main/kotlin/org/opendc/runner/web/Main.kt +++ b/simulator/opendc-runner-web/src/main/kotlin/org/opendc/runner/web/Main.kt @@ -277,8 +277,7 @@ public class RunnerCli : CliktCommand(name = "runner") { trace, scheduler, chan, - monitor, - emptyMap() + monitor ) logger.debug("SUBMIT=${scheduler.submittedVms}") diff --git a/simulator/opendc-runner-web/src/main/kotlin/org/opendc/runner/web/TopologyParser.kt b/simulator/opendc-runner-web/src/main/kotlin/org/opendc/runner/web/TopologyParser.kt index 244f2a3d..5e483271 100644 --- a/simulator/opendc-runner-web/src/main/kotlin/org/opendc/runner/web/TopologyParser.kt +++ b/simulator/opendc-runner-web/src/main/kotlin/org/opendc/runner/web/TopologyParser.kt @@ -60,7 +60,6 @@ public class TopologyParser(private val collection: MongoCollection, p val random = Random(0) for (machine in fetchMachines(id)) { - val machineId = machine.getString("_id") val clusterId = machine.getString("rack_id") val position = machine.getInteger("position") -- cgit v1.2.3