summaryrefslogtreecommitdiff
path: root/opendc/opendc-experiments-sc20/src
diff options
context:
space:
mode:
authorFabian Mastenbroek <mail.fabianm@gmail.com>2020-05-19 02:00:39 +0200
committerFabian Mastenbroek <mail.fabianm@gmail.com>2020-05-20 01:36:02 +0200
commitee9f39c98d2d00586ac33767bb3205774981a58f (patch)
tree7af08c4dc4c2dffbf2718b2d92990a16fea0b75b /opendc/opendc-experiments-sc20/src
parentdf5d9363e4e3558cb6e2f7f421412548b6d7d36a (diff)
perf: Add support for slice batches in VirtDriver
Diffstat (limited to 'opendc/opendc-experiments-sc20/src')
-rw-r--r--opendc/opendc-experiments-sc20/src/test/kotlin/com/atlarge/opendc/experiments/sc20/Sc20IntegrationTest.kt54
-rw-r--r--opendc/opendc-experiments-sc20/src/test/resources/env/single.txt3
2 files changed, 52 insertions, 5 deletions
diff --git a/opendc/opendc-experiments-sc20/src/test/kotlin/com/atlarge/opendc/experiments/sc20/Sc20IntegrationTest.kt b/opendc/opendc-experiments-sc20/src/test/kotlin/com/atlarge/opendc/experiments/sc20/Sc20IntegrationTest.kt
index abd5c961..0a4a56a8 100644
--- a/opendc/opendc-experiments-sc20/src/test/kotlin/com/atlarge/opendc/experiments/sc20/Sc20IntegrationTest.kt
+++ b/opendc/opendc-experiments-sc20/src/test/kotlin/com/atlarge/opendc/experiments/sc20/Sc20IntegrationTest.kt
@@ -47,9 +47,11 @@ import kotlinx.coroutines.channels.Channel
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking
import org.junit.jupiter.api.AfterEach
+import org.junit.jupiter.api.Assertions.assertAll
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
+import org.junit.jupiter.api.assertAll
import java.io.File
import java.util.ServiceLoader
@@ -147,6 +149,48 @@ class Sc20IntegrationTest {
assertEquals(0, monitor.totalInterferedBurst)
}
+ @Test
+ fun small() {
+ val seed = 1
+ val chan = Channel<Unit>(Channel.CONFLATED)
+ val allocationPolicy = AvailableCoreMemoryAllocationPolicy()
+ val traceReader = createTestTraceReader(0.5, seed)
+ val environmentReader = createTestEnvironmentReader("single")
+ lateinit var scheduler: SimpleVirtProvisioningService
+
+ root.launch {
+ val res = createProvisioner(
+ root,
+ environmentReader,
+ allocationPolicy
+ )
+ scheduler = res.second
+
+
+ attachMonitor(scheduler, monitor)
+ processTrace(
+ traceReader,
+ scheduler,
+ chan,
+ monitor
+ )
+
+ println("Finish SUBMIT=${scheduler.submittedVms} FAIL=${scheduler.unscheduledVms} QUEUE=${scheduler.queuedVms} RUNNING=${scheduler.runningVms} FINISH=${scheduler.finishedVms}")
+
+ scheduler.terminate()
+ }
+
+ runSimulation()
+
+ // Note that these values have been verified beforehand
+ assertAll(
+ { assertEquals(96344114723, monitor.totalRequestedBurst) },
+ { assertEquals(96324378235, monitor.totalGrantedBurst) },
+ { assertEquals(19736424, monitor.totalOvercommissionedBurst) },
+ { assertEquals(0, monitor.totalInterferedBurst) }
+ )
+ }
+
/**
* Run the simulation.
*/
@@ -157,20 +201,20 @@ class Sc20IntegrationTest {
/**
* Obtain the trace reader for the test.
*/
- private fun createTestTraceReader(): TraceReader<VmWorkload> {
+ private fun createTestTraceReader(fraction: Double = 1.0, seed: Int = 0): TraceReader<VmWorkload> {
return Sc20ParquetTraceReader(
Sc20RawParquetTraceReader(File("src/test/resources/trace")),
emptyMap(),
- Workload("test", 1.0),
- 0
+ Workload("test", fraction),
+ seed
)
}
/**
* Obtain the environment reader for the test.
*/
- private fun createTestEnvironmentReader(): EnvironmentReader {
- val stream = object {}.javaClass.getResourceAsStream("/env/topology.txt")
+ private fun createTestEnvironmentReader(name: String = "topology"): EnvironmentReader {
+ val stream = object {}.javaClass.getResourceAsStream("/env/$name.txt")
return Sc20ClusterEnvironmentReader(stream)
}
diff --git a/opendc/opendc-experiments-sc20/src/test/resources/env/single.txt b/opendc/opendc-experiments-sc20/src/test/resources/env/single.txt
new file mode 100644
index 00000000..53b3c2d7
--- /dev/null
+++ b/opendc/opendc-experiments-sc20/src/test/resources/env/single.txt
@@ -0,0 +1,3 @@
+ClusterID;ClusterName;Cores;Speed;Memory;numberOfHosts;memoryCapacityPerHost;coreCountPerHost
+A01;A01;8;3.2;64;1;64;8
+