From 92e858e398bf69380dbacebc042dde2bfa8cfe9c Mon Sep 17 00:00:00 2001 From: Fabian Mastenbroek Date: Fri, 14 Feb 2020 12:43:29 +0100 Subject: refactor: Integrate opendc-compute in existing model This change refactors the existing model to use the new interfaces from the opendc-compute module. --- .../environment/sc18/Sc18EnvironmentReader.kt | 47 ++++++++++++---------- .../opendc/format/trace/gwf/GwfTraceReader.kt | 4 +- 2 files changed, 28 insertions(+), 23 deletions(-) (limited to 'opendc/opendc-format/src') diff --git a/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/sc18/Sc18EnvironmentReader.kt b/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/sc18/Sc18EnvironmentReader.kt index ad111e74..7436778f 100644 --- a/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/sc18/Sc18EnvironmentReader.kt +++ b/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/sc18/Sc18EnvironmentReader.kt @@ -24,20 +24,22 @@ package com.atlarge.opendc.format.environment.sc18 -import com.atlarge.opendc.core.Cluster +import com.atlarge.opendc.compute.core.Flavor +import com.atlarge.opendc.compute.core.ProcessingUnit +import com.atlarge.opendc.compute.metal.driver.FakeBareMetalDriver +import com.atlarge.opendc.compute.metal.service.ProvisioningService +import com.atlarge.opendc.compute.metal.service.SimpleProvisioningService import com.atlarge.opendc.core.Environment import com.atlarge.opendc.core.Platform import com.atlarge.opendc.core.Zone -import com.atlarge.opendc.core.resources.compute.ProcessingElement -import com.atlarge.opendc.core.resources.compute.ProcessingUnit -import com.atlarge.opendc.core.resources.compute.host.Host -import com.atlarge.opendc.core.resources.compute.scheduling.SpaceSharedMachineScheduler +import com.atlarge.opendc.core.services.ServiceRegistryImpl import com.atlarge.opendc.format.environment.EnvironmentReader import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper import com.fasterxml.jackson.module.kotlin.readValue import java.io.InputStream import java.util.UUID +import kotlinx.coroutines.runBlocking /** * A parser for the JSON experiment setup files used for the SC18 paper: "A Reference Architecture for Datacenter @@ -54,29 +56,39 @@ class Sc18EnvironmentReader(input: InputStream, mapper: ObjectMapper = jacksonOb init { val setup = mapper.readValue(input) - val clusters = setup.rooms.mapIndexed { i, room -> - var counter = 0 - val hosts = room.objects.flatMap { roomObject -> + var counter = 0 + val nodes = setup.rooms.flatMap { room -> + room.objects.flatMap { roomObject -> when (roomObject) { is RoomObject.Rack -> { roomObject.machines.map { machine -> - val cores = machine.cpus.flatMap { id -> + val cores = machine.cpus.map { id -> when (id) { - 1 -> List(4) { ProcessingElement(it, CPUS[0]) } - 2 -> List(2) { ProcessingElement(it, CPUS[1]) } + 1 -> ProcessingUnit("Intel", "Core(TM) i7-6920HQ", "amd64", 4100.0, 4) + 2 -> ProcessingUnit("Intel", "Core(TM) I7-6920HQ", "amd64", 3500.0, 2) else -> throw IllegalArgumentException("The cpu id $id is not recognized") } } - Host(UUID.randomUUID(), "node-${counter++}", SpaceSharedMachineScheduler, cores) + val flavor = Flavor(cores) + FakeBareMetalDriver(UUID.randomUUID(), "node-${counter++}", flavor) } } } } - Cluster(UUID.randomUUID(), "cluster-$i", hosts) } + val provisioningService = SimpleProvisioningService() + runBlocking { + for (node in nodes) { + provisioningService.create(node) + } + } + + val serviceRegistry = ServiceRegistryImpl() + serviceRegistry[ProvisioningService.Key] = provisioningService + val platform = Platform(UUID.randomUUID(), "sc18-platform", listOf( - Zone(UUID.randomUUID(), "zone", emptySet(), clusters) + Zone(UUID.randomUUID(), "zone", serviceRegistry) )) environment = Environment(setup.name, null, listOf(platform)) @@ -85,11 +97,4 @@ class Sc18EnvironmentReader(input: InputStream, mapper: ObjectMapper = jacksonOb override fun read(): Environment = environment override fun close() {} - - companion object { - val CPUS = arrayOf( - ProcessingUnit("Intel", 6, 6920, "Intel(R) Core(TM) i7-6920HQ CPU @ 4.10GHz", 4100.0, 1), - ProcessingUnit("Intel", 6, 6930, "Intel(R) Core(TM) i7-6920HQ CPU @ 3.50GHz", 3500.0, 1) - ) - } } diff --git a/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/gwf/GwfTraceReader.kt b/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/gwf/GwfTraceReader.kt index 407a5f4e..33db78c9 100644 --- a/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/gwf/GwfTraceReader.kt +++ b/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/gwf/GwfTraceReader.kt @@ -24,8 +24,8 @@ package com.atlarge.opendc.format.trace.gwf +import com.atlarge.opendc.compute.core.image.FlopsApplicationImage import com.atlarge.opendc.core.User -import com.atlarge.opendc.core.workload.application.FlopsApplication import com.atlarge.opendc.format.trace.TraceEntry import com.atlarge.opendc.format.trace.TraceReader import com.atlarge.opendc.workflows.workload.Job @@ -120,7 +120,7 @@ class GwfTraceReader(reader: BufferedReader) : TraceReader { val workflow = entry.workload val task = Task( UUID(0L, taskId), "", - FlopsApplication(UUID(0L, taskId), "", workflow.owner, cores, flops), + FlopsApplicationImage(flops, cores), HashSet() ) entry.submissionTime = min(entry.submissionTime, submitTime) -- cgit v1.2.3 From 6ff2e43c55ffec98f444b9cd61b550fadd83633d Mon Sep 17 00:00:00 2001 From: Fabian Mastenbroek Date: Fri, 14 Feb 2020 12:52:29 +0100 Subject: refactor: Rename Flavor to ServerFlavor This change renames Flavor to ServerFlavor to be more indicative of its function. The Flavor name follows the naming of the OpenStack project. --- .../atlarge/opendc/format/environment/sc18/Sc18EnvironmentReader.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'opendc/opendc-format/src') diff --git a/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/sc18/Sc18EnvironmentReader.kt b/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/sc18/Sc18EnvironmentReader.kt index 7436778f..4f7907c6 100644 --- a/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/sc18/Sc18EnvironmentReader.kt +++ b/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/sc18/Sc18EnvironmentReader.kt @@ -24,7 +24,7 @@ package com.atlarge.opendc.format.environment.sc18 -import com.atlarge.opendc.compute.core.Flavor +import com.atlarge.opendc.compute.core.ServerFlavor import com.atlarge.opendc.compute.core.ProcessingUnit import com.atlarge.opendc.compute.metal.driver.FakeBareMetalDriver import com.atlarge.opendc.compute.metal.service.ProvisioningService @@ -69,7 +69,7 @@ class Sc18EnvironmentReader(input: InputStream, mapper: ObjectMapper = jacksonOb else -> throw IllegalArgumentException("The cpu id $id is not recognized") } } - val flavor = Flavor(cores) + val flavor = ServerFlavor(cores) FakeBareMetalDriver(UUID.randomUUID(), "node-${counter++}", flavor) } } -- cgit v1.2.3 From cfb3a87edad5093b6f75e0bbde0cfdb58fdc9487 Mon Sep 17 00:00:00 2001 From: Fabian Mastenbroek Date: Fri, 14 Feb 2020 12:54:06 +0100 Subject: refactor: Rename FakeBareMetalDriver to SimpleBareMetalDriver --- .../atlarge/opendc/format/environment/sc18/Sc18EnvironmentReader.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'opendc/opendc-format/src') diff --git a/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/sc18/Sc18EnvironmentReader.kt b/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/sc18/Sc18EnvironmentReader.kt index 4f7907c6..f1acef4f 100644 --- a/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/sc18/Sc18EnvironmentReader.kt +++ b/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/sc18/Sc18EnvironmentReader.kt @@ -26,7 +26,7 @@ package com.atlarge.opendc.format.environment.sc18 import com.atlarge.opendc.compute.core.ServerFlavor import com.atlarge.opendc.compute.core.ProcessingUnit -import com.atlarge.opendc.compute.metal.driver.FakeBareMetalDriver +import com.atlarge.opendc.compute.metal.driver.SimpleBareMetalDriver import com.atlarge.opendc.compute.metal.service.ProvisioningService import com.atlarge.opendc.compute.metal.service.SimpleProvisioningService import com.atlarge.opendc.core.Environment @@ -70,7 +70,7 @@ class Sc18EnvironmentReader(input: InputStream, mapper: ObjectMapper = jacksonOb } } val flavor = ServerFlavor(cores) - FakeBareMetalDriver(UUID.randomUUID(), "node-${counter++}", flavor) + SimpleBareMetalDriver(UUID.randomUUID(), "node-${counter++}", flavor) } } } -- cgit v1.2.3 From baeb118d68747e58f1c1beb8b2d27e1d640827f4 Mon Sep 17 00:00:00 2001 From: Fabian Mastenbroek Date: Fri, 14 Feb 2020 13:25:59 +0100 Subject: style: Fix Ktlint issues --- .../com/atlarge/opendc/format/environment/sc18/Sc18EnvironmentReader.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'opendc/opendc-format/src') diff --git a/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/sc18/Sc18EnvironmentReader.kt b/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/sc18/Sc18EnvironmentReader.kt index f1acef4f..4d2f9e85 100644 --- a/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/sc18/Sc18EnvironmentReader.kt +++ b/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/sc18/Sc18EnvironmentReader.kt @@ -24,8 +24,8 @@ package com.atlarge.opendc.format.environment.sc18 -import com.atlarge.opendc.compute.core.ServerFlavor import com.atlarge.opendc.compute.core.ProcessingUnit +import com.atlarge.opendc.compute.core.ServerFlavor import com.atlarge.opendc.compute.metal.driver.SimpleBareMetalDriver import com.atlarge.opendc.compute.metal.service.ProvisioningService import com.atlarge.opendc.compute.metal.service.SimpleProvisioningService -- cgit v1.2.3