summaryrefslogtreecommitdiff
path: root/simulator/opendc-experiments/opendc-experiments-energy21/src/main
diff options
context:
space:
mode:
authorFabian Mastenbroek <mail.fabianm@gmail.com>2021-04-08 20:02:15 +0200
committerFabian Mastenbroek <mail.fabianm@gmail.com>2021-04-08 20:02:15 +0200
commit4f80e79b567b7d91b1086dcd74ef35616d7177f2 (patch)
tree953d095b08fad740725d24575d8da49e1da7d131 /simulator/opendc-experiments/opendc-experiments-energy21/src/main
parentd0f5200cf378a0d7f9397526f0db0695bdc34dd2 (diff)
compute: Migrate to new FilterScheduler
This change migrates the OpenDC codebase to use the new FilterScheduler for scheduling virtual machines. This removes the old allocation policies as well.
Diffstat (limited to 'simulator/opendc-experiments/opendc-experiments-energy21/src/main')
-rw-r--r--simulator/opendc-experiments/opendc-experiments-energy21/src/main/kotlin/org/opendc/experiments/energy21/EnergyExperiment.kt26
1 files changed, 16 insertions, 10 deletions
diff --git a/simulator/opendc-experiments/opendc-experiments-energy21/src/main/kotlin/org/opendc/experiments/energy21/EnergyExperiment.kt b/simulator/opendc-experiments/opendc-experiments-energy21/src/main/kotlin/org/opendc/experiments/energy21/EnergyExperiment.kt
index aa0f5ab4..c5982d8c 100644
--- a/simulator/opendc-experiments/opendc-experiments-energy21/src/main/kotlin/org/opendc/experiments/energy21/EnergyExperiment.kt
+++ b/simulator/opendc-experiments/opendc-experiments-energy21/src/main/kotlin/org/opendc/experiments/energy21/EnergyExperiment.kt
@@ -32,8 +32,11 @@ import kotlinx.coroutines.coroutineScope
import kotlinx.coroutines.test.runBlockingTest
import mu.KotlinLogging
import org.opendc.compute.service.ComputeService
-import org.opendc.compute.service.scheduler.AllocationPolicy
-import org.opendc.compute.service.scheduler.RandomAllocationPolicy
+import org.opendc.compute.service.scheduler.ComputeScheduler
+import org.opendc.compute.service.scheduler.FilterScheduler
+import org.opendc.compute.service.scheduler.filters.ComputeCapabilitiesFilter
+import org.opendc.compute.service.scheduler.filters.ComputeFilter
+import org.opendc.compute.service.scheduler.weights.RandomWeigher
import org.opendc.compute.simulator.SimHost
import org.opendc.experiments.capelin.*
import org.opendc.experiments.capelin.monitor.ParquetExperimentMonitor
@@ -88,7 +91,10 @@ public class EnergyExperiment : Experiment("Energy Modeling 2021") {
val clock = DelayControllerClockAdapter(this)
val chan = Channel<Unit>(Channel.CONFLATED)
- val allocationPolicy = RandomAllocationPolicy()
+ val allocationPolicy = FilterScheduler(
+ filters = listOf(ComputeFilter(), ComputeCapabilitiesFilter()),
+ weighers = listOf(RandomWeigher(Random(0)) to 1.0)
+ )
val meterProvider: MeterProvider = SdkMeterProvider
.builder()
@@ -125,7 +131,7 @@ public class EnergyExperiment : Experiment("Energy Modeling 2021") {
public suspend fun withComputeService(
clock: Clock,
meterProvider: MeterProvider,
- allocationPolicy: AllocationPolicy,
+ scheduler: ComputeScheduler,
block: suspend CoroutineScope.(ComputeService) -> Unit
): Unit = coroutineScope {
val model = createMachineModel()
@@ -144,18 +150,18 @@ public class EnergyExperiment : Experiment("Energy Modeling 2021") {
)
}
- val schedulerMeter = meterProvider.get("opendc-compute")
- val scheduler =
- ComputeService(coroutineContext, clock, schedulerMeter, allocationPolicy)
+ val serviceMeter = meterProvider.get("opendc-compute")
+ val service =
+ ComputeService(coroutineContext, clock, serviceMeter, scheduler)
for (host in hosts) {
- scheduler.addHost(host)
+ service.addHost(host)
}
try {
- block(this, scheduler)
+ block(this, service)
} finally {
- scheduler.close()
+ service.close()
hosts.forEach(SimHost::close)
}
}