diff options
| author | Fabian Mastenbroek <mail.fabianm@gmail.com> | 2020-04-15 16:12:25 +0200 |
|---|---|---|
| committer | Fabian Mastenbroek <mail.fabianm@gmail.com> | 2020-04-15 17:25:41 +0200 |
| commit | eab4c190142f54291ed235e4e18f3a35385a541c (patch) | |
| tree | a970a585d381ab26e76598a647612f083be3861b /opendc/opendc-experiments-sc20 | |
| parent | a77829c7a8cf300a99a695423d85f905e0209286 (diff) | |
perf: Optimize trace loading for memory usage
Diffstat (limited to 'opendc/opendc-experiments-sc20')
3 files changed, 17 insertions, 14 deletions
diff --git a/opendc/opendc-experiments-sc20/build.gradle.kts b/opendc/opendc-experiments-sc20/build.gradle.kts index d23456a8..4b73cedd 100644 --- a/opendc/opendc-experiments-sc20/build.gradle.kts +++ b/opendc/opendc-experiments-sc20/build.gradle.kts @@ -32,6 +32,7 @@ plugins { application { mainClassName = "com.atlarge.opendc.experiments.sc20.TestExperimentKt" + applicationDefaultJvmArgs = listOf("-Xmx3096M") } dependencies { diff --git a/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/Sc20Monitor.kt b/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/Sc20Monitor.kt index 464f4fc6..7c198e56 100644 --- a/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/Sc20Monitor.kt +++ b/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/Sc20Monitor.kt @@ -25,7 +25,7 @@ class Sc20Monitor( .name("duration").type().longType().noDefault() .name("requestedBurst").type().longType().noDefault() .name("grantedBurst").type().longType().noDefault() - .name("overcommisionedBurst").type().longType().noDefault() + .name("overcommissionedBurst").type().longType().noDefault() .name("interferedBurst").type().longType().noDefault() .name("cpuUsage").type().doubleType().noDefault() .name("cpuDemand").type().doubleType().noDefault() @@ -48,7 +48,14 @@ class Sc20Monitor( suspend fun onVmStateChanged(server: Server) {} - suspend fun serverStateChanged(driver: VirtDriver, server: Server) { + suspend fun serverStateChanged( + driver: VirtDriver, + server: Server, + submittedVms: Long, + queuedVms: Long, + runningVms: Long, + finishedVms: Long + ) { val lastServerState = lastServerStates[server] if (server.state == ServerState.SHUTOFF && lastServerState != null) { val duration = simulationContext.clock.millis() - lastServerState.second @@ -62,10 +69,10 @@ class Sc20Monitor( 0.0, 0, server, - 0, - 0, - 0, - 0, + submittedVms, + queuedVms, + runningVms, + finishedVms, duration ) } @@ -101,7 +108,7 @@ class Sc20Monitor( record.put("duration", duration) record.put("requestedBurst", requestedBurst) record.put("grantedBurst", grantedBurst) - record.put("overcommisionedBurst", overcommissionedBurst) + record.put("overcommissionedBurst", overcommissionedBurst) record.put("interferedBurst", interferedBurst) record.put("cpuUsage", cpuUsage) record.put("cpuDemand", cpuDemand) diff --git a/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/TestExperiment.kt b/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/TestExperiment.kt index 08815720..3aef80e6 100644 --- a/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/TestExperiment.kt +++ b/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/TestExperiment.kt @@ -29,7 +29,6 @@ import com.atlarge.odcsim.SimulationEngineProvider import com.atlarge.odcsim.simulationContext import com.atlarge.opendc.compute.core.Flavor import com.atlarge.opendc.compute.core.ServerEvent -import com.atlarge.opendc.compute.core.ServerState import com.atlarge.opendc.compute.metal.NODE_CLUSTER import com.atlarge.opendc.compute.metal.service.ProvisioningService import com.atlarge.opendc.compute.virt.HypervisorEvent @@ -174,20 +173,16 @@ fun main(args: Array<String>) { delay(10) val hypervisors = scheduler.drivers() - var availableHypervisors = hypervisors.size // Monitor hypervisor events for (hypervisor in hypervisors) { // TODO Do not expose VirtDriver directly but use Hypervisor class. - monitor.serverStateChanged(hypervisor, (hypervisor as SimpleVirtDriver).server) + monitor.serverStateChanged(hypervisor, (hypervisor as SimpleVirtDriver).server, scheduler.submittedVms, scheduler.queuedVms, scheduler.runningVms, scheduler.finishedVms) hypervisor.server.events .onEach { event -> when (event) { is ServerEvent.StateChanged -> { - monitor.serverStateChanged(hypervisor, event.server) - - if (event.server.state == ServerState.ERROR) - availableHypervisors -= 1 + monitor.serverStateChanged(hypervisor, event.server, scheduler.submittedVms, scheduler.queuedVms, scheduler.runningVms, scheduler.finishedVms) } } } |
