summaryrefslogtreecommitdiff
path: root/opendc-compute/opendc-compute-simulator/src/main
diff options
context:
space:
mode:
authorFabian Mastenbroek <mail.fabianm@gmail.com>2021-06-21 14:34:10 +0200
committerGitHub <noreply@github.com>2021-06-21 14:34:10 +0200
commitba32561e4b0e00c00d528df615a58e396e0fddc0 (patch)
tree06bbb8161910a81b3dc1160b180650660bc50be4 /opendc-compute/opendc-compute-simulator/src/main
parentb8b0f39028af90fa54b42a00214b2ea9a5e48e2e (diff)
parent966715d7df139a431293f5c2fc67916fbcc1ecfb (diff)
simulator: Optimize resource interpreter implementation
This pull request implements several optimizations in the resource interpreter implementation. * Interpreter is now shared across hosts in experiments * Interpreter allocations are pooled where possible * Resource lifecycle concept is eliminated * Optimized flag management in interpreter
Diffstat (limited to 'opendc-compute/opendc-compute-simulator/src/main')
-rw-r--r--opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/SimHost.kt12
1 files changed, 3 insertions, 9 deletions
diff --git a/opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/SimHost.kt b/opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/SimHost.kt
index 540e27fe..c9527bb6 100644
--- a/opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/SimHost.kt
+++ b/opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/SimHost.kt
@@ -42,7 +42,6 @@ import org.opendc.simulator.compute.power.PowerModel
import org.opendc.simulator.compute.power.SimplePowerDriver
import org.opendc.simulator.failures.FailureDomain
import org.opendc.simulator.resources.SimResourceInterpreter
-import java.time.Clock
import java.util.*
import kotlin.coroutines.CoroutineContext
import kotlin.coroutines.resume
@@ -56,7 +55,7 @@ public class SimHost(
model: SimMachineModel,
override val meta: Map<String, Any>,
context: CoroutineContext,
- clock: Clock,
+ interpreter: SimResourceInterpreter,
meter: Meter,
hypervisor: SimHypervisorProvider,
scalingGovernor: ScalingGovernor,
@@ -70,12 +69,12 @@ public class SimHost(
model: SimMachineModel,
meta: Map<String, Any>,
context: CoroutineContext,
- clock: Clock,
+ interpreter: SimResourceInterpreter,
meter: Meter,
hypervisor: SimHypervisorProvider,
powerModel: PowerModel = ConstantPowerModel(0.0),
mapper: SimWorkloadMapper = SimMetaWorkloadMapper(),
- ) : this(uid, name, model, meta, context, clock, meter, hypervisor, PerformanceScalingGovernor(), SimplePowerDriver(powerModel), mapper)
+ ) : this(uid, name, model, meta, context, interpreter, meter, hypervisor, PerformanceScalingGovernor(), SimplePowerDriver(powerModel), mapper)
/**
* The [CoroutineScope] of the host bounded by the lifecycle of the host.
@@ -98,11 +97,6 @@ public class SimHost(
private var availableMemory: Long = model.memory.sumOf { it.size }
/**
- * The resource interpreter to schedule the resource interactions.
- */
- private val interpreter = SimResourceInterpreter(context, clock)
-
- /**
* The machine to run on.
*/
public val machine: SimBareMetalMachine = SimBareMetalMachine(interpreter, model, scalingDriver)