summaryrefslogtreecommitdiff
path: root/opendc/opendc-experiments-sc20
diff options
context:
space:
mode:
authorFabian Mastenbroek <mail.fabianm@gmail.com>2020-04-15 16:12:25 +0200
committerFabian Mastenbroek <mail.fabianm@gmail.com>2020-04-15 17:25:41 +0200
commiteab4c190142f54291ed235e4e18f3a35385a541c (patch)
treea970a585d381ab26e76598a647612f083be3861b /opendc/opendc-experiments-sc20
parenta77829c7a8cf300a99a695423d85f905e0209286 (diff)
perf: Optimize trace loading for memory usage
Diffstat (limited to 'opendc/opendc-experiments-sc20')
-rw-r--r--opendc/opendc-experiments-sc20/build.gradle.kts1
-rw-r--r--opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/Sc20Monitor.kt21
-rw-r--r--opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/TestExperiment.kt9
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)
}
}
}