diff options
| author | Fabian Mastenbroek <mail.fabianm@gmail.com> | 2020-10-05 15:26:46 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-10-05 15:26:46 +0200 |
| commit | 1f0e5a17861e8a8de623b540596aee162e712521 (patch) | |
| tree | 207f2deb8e3782f1a52e6b32290e274c6ff7ba1f /simulator/opendc-runner-web | |
| parent | 0119ca3b2e05b06f9646149c2d7bfe3d4b57c380 (diff) | |
| parent | 374960cd15a2893a124c42975167f8bf6e45e868 (diff) | |
Merge pull request #45 from atlarge-research/refactor/decouple
Decouple simulation logic from OpenDC Compute
Diffstat (limited to 'simulator/opendc-runner-web')
3 files changed, 17 insertions, 19 deletions
diff --git a/simulator/opendc-runner-web/build.gradle.kts b/simulator/opendc-runner-web/build.gradle.kts index 7e81347c..cf437843 100644 --- a/simulator/opendc-runner-web/build.gradle.kts +++ b/simulator/opendc-runner-web/build.gradle.kts @@ -34,10 +34,11 @@ 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")) + 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/Main.kt b/simulator/opendc-runner-web/src/main/kotlin/org/opendc/runner/web/Main.kt index 67ec046a..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 @@ -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 @@ -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 {} @@ -278,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 de9ece75..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 @@ -31,19 +31,20 @@ 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.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 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,11 +56,10 @@ public class TopologyParser(private val collection: MongoCollection<Document>, p * Parse the topology with the specified [id]. */ override suspend fun construct(coroutineScope: CoroutineScope, clock: Clock): Environment { - val nodes = mutableListOf<SimpleBareMetalDriver>() + val nodes = mutableListOf<SimBareMetalDriver>() 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") @@ -81,14 +81,13 @@ public class TopologyParser(private val collection: MongoCollection<Document>, 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 |
