diff options
| author | Fabian Mastenbroek <mail.fabianm@gmail.com> | 2022-09-05 19:20:14 +0200 |
|---|---|---|
| committer | Fabian Mastenbroek <mail.fabianm@gmail.com> | 2022-09-21 11:31:15 +0200 |
| commit | 2ec5e8f1e44239916779655d4d68a9c6dae8e894 (patch) | |
| tree | f9c3cf0f6e0e76590818939e01a710fd271d9bf8 /opendc-simulator/opendc-simulator-compute/src/main | |
| parent | a7510e0708b6e5435f8440e588c762d6e6cd8a22 (diff) | |
refactor(sim/compute): Pass interference key via parameter
This change updates the signature of the `SimHypervisor` interface to
accept a `VmInterferenceKey` when creating a new virtual machine,
instead of providing a string identifier. This is in preparation for
removing the dependency on the `VmInterferenceModel` in the
`SimAbstractHypervisor` class.
Diffstat (limited to 'opendc-simulator/opendc-simulator-compute/src/main')
2 files changed, 7 insertions, 10 deletions
diff --git a/opendc-simulator/opendc-simulator-compute/src/main/kotlin/org/opendc/simulator/compute/kernel/SimAbstractHypervisor.kt b/opendc-simulator/opendc-simulator-compute/src/main/kotlin/org/opendc/simulator/compute/kernel/SimAbstractHypervisor.kt index b98647e7..b3898004 100644 --- a/opendc-simulator/opendc-simulator-compute/src/main/kotlin/org/opendc/simulator/compute/kernel/SimAbstractHypervisor.kt +++ b/opendc-simulator/opendc-simulator-compute/src/main/kotlin/org/opendc/simulator/compute/kernel/SimAbstractHypervisor.kt @@ -93,9 +93,9 @@ public abstract class SimAbstractHypervisor( private val governors = mutableListOf<ScalingGovernor.Logic>() /* SimHypervisor */ - override fun newMachine(model: MachineModel, interferenceId: String?): SimVirtualMachine { + override fun newMachine(model: MachineModel, interferenceKey: VmInterferenceKey?): SimVirtualMachine { require(canFit(model)) { "Machine does not fit" } - val vm = VirtualMachine(model, interferenceId) + val vm = VirtualMachine(model, interferenceKey) _vms.add(vm) return vm } @@ -159,10 +159,11 @@ public abstract class SimAbstractHypervisor( * A virtual machine running on the hypervisor. * * @param model The machine model of the virtual machine. + * @param interferenceKey The interference key of this virtual machine. */ private inner class VirtualMachine( model: MachineModel, - interferenceId: String? = null + private val interferenceKey: VmInterferenceKey? = null ) : SimAbstractMachine(engine, model), SimVirtualMachine, AutoCloseable { /** * A flag to indicate that the machine is closed. @@ -170,11 +171,6 @@ public abstract class SimAbstractHypervisor( private var isClosed = false /** - * The interference key of this virtual machine. - */ - private val interferenceKey: VmInterferenceKey? = interferenceId?.let { interferenceDomain?.createKey(it) } - - /** * The vCPUs of the machine. */ override val cpus = model.cpus.map { cpu -> VCpu(mux, mux.newInput(cpu.frequency), cpu) } diff --git a/opendc-simulator/opendc-simulator-compute/src/main/kotlin/org/opendc/simulator/compute/kernel/SimHypervisor.kt b/opendc-simulator/opendc-simulator-compute/src/main/kotlin/org/opendc/simulator/compute/kernel/SimHypervisor.kt index a69f419f..229e569c 100644 --- a/opendc-simulator/opendc-simulator-compute/src/main/kotlin/org/opendc/simulator/compute/kernel/SimHypervisor.kt +++ b/opendc-simulator/opendc-simulator-compute/src/main/kotlin/org/opendc/simulator/compute/kernel/SimHypervisor.kt @@ -23,6 +23,7 @@ package org.opendc.simulator.compute.kernel import org.opendc.simulator.compute.SimMachine +import org.opendc.simulator.compute.kernel.interference.VmInterferenceKey import org.opendc.simulator.compute.model.MachineModel import org.opendc.simulator.compute.workload.SimWorkload @@ -65,9 +66,9 @@ public interface SimHypervisor : SimWorkload { * Create a [SimMachine] instance on which users may run a [SimWorkload]. * * @param model The machine to create. - * @param interferenceId An identifier for the interference model. + * @param interferenceKey The key of the machine in the interference model. */ - public fun newMachine(model: MachineModel, interferenceId: String? = null): SimVirtualMachine + public fun newMachine(model: MachineModel, interferenceKey: VmInterferenceKey? = null): SimVirtualMachine /** * Remove the specified [machine] from the hypervisor. |
