summaryrefslogtreecommitdiff
path: root/opendc-simulator/opendc-simulator-compute/src/main
diff options
context:
space:
mode:
authorNiels Thiele <noleu66@posteo.net>2025-07-15 15:53:37 +0200
committerGitHub <noreply@github.com>2025-07-15 15:53:37 +0200
commita5f3c19200026b9476edc39b951eb1003cff0831 (patch)
tree785201fc58893902c15d691eff252ac91f08f690 /opendc-simulator/opendc-simulator-compute/src/main
parentb2dc97dc84f56174ede9f273999ade2ed059d431 (diff)
Add configurable resource distribution at host level (#355)
Diffstat (limited to 'opendc-simulator/opendc-simulator-compute/src/main')
-rw-r--r--opendc-simulator/opendc-simulator-compute/src/main/java/org/opendc/simulator/compute/machine/SimMachine.java9
-rw-r--r--opendc-simulator/opendc-simulator-compute/src/main/java/org/opendc/simulator/compute/models/MachineModel.java6
-rw-r--r--opendc-simulator/opendc-simulator-compute/src/main/java/org/opendc/simulator/compute/workload/VirtualMachine.java1
3 files changed, 10 insertions, 6 deletions
diff --git a/opendc-simulator/opendc-simulator-compute/src/main/java/org/opendc/simulator/compute/machine/SimMachine.java b/opendc-simulator/opendc-simulator-compute/src/main/java/org/opendc/simulator/compute/machine/SimMachine.java
index c9e3ab8c..5f4a4fcd 100644
--- a/opendc-simulator/opendc-simulator-compute/src/main/java/org/opendc/simulator/compute/machine/SimMachine.java
+++ b/opendc-simulator/opendc-simulator-compute/src/main/java/org/opendc/simulator/compute/machine/SimMachine.java
@@ -46,6 +46,7 @@ import org.opendc.simulator.engine.graph.FlowDistributor;
import org.opendc.simulator.engine.graph.FlowEdge;
import org.opendc.simulator.engine.graph.FlowNode;
import org.opendc.simulator.engine.graph.FlowSupplier;
+import org.opendc.simulator.engine.graph.distributionPolicies.FlowDistributorFactory;
/**
* A machine that is able to execute {@link SimWorkload} objects.
@@ -220,7 +221,9 @@ public class SimMachine {
-1);
// Create a FlowDistributor and add the cpu as supplier
- this.distributors.put(ResourceType.CPU, new FlowDistributor(engine));
+ this.distributors.put(
+ ResourceType.CPU,
+ FlowDistributorFactory.getFlowDistributor(engine, this.machineModel.getCpuDistributionStrategy()));
new FlowEdge(
this.distributors.get(ResourceType.CPU),
(FlowSupplier) this.computeResources.get(ResourceType.CPU).getFirst(),
@@ -232,7 +235,9 @@ public class SimMachine {
this.memory = new Memory(engine, this.machineModel.getMemory());
if (this.availableResources.contains(ResourceType.GPU)) {
- this.distributors.put(ResourceType.GPU, new FlowDistributor(engine));
+ this.distributors.put(
+ ResourceType.GPU,
+ FlowDistributorFactory.getFlowDistributor(engine, this.machineModel.getGpuDistributionStrategy()));
ArrayList<ComputeResource> gpus = new ArrayList<>();
for (GpuModel gpuModel : machineModel.getGpuModels()) {
diff --git a/opendc-simulator/opendc-simulator-compute/src/main/java/org/opendc/simulator/compute/models/MachineModel.java b/opendc-simulator/opendc-simulator-compute/src/main/java/org/opendc/simulator/compute/models/MachineModel.java
index e11d9cf2..f8cafc35 100644
--- a/opendc-simulator/opendc-simulator-compute/src/main/java/org/opendc/simulator/compute/models/MachineModel.java
+++ b/opendc-simulator/opendc-simulator-compute/src/main/java/org/opendc/simulator/compute/models/MachineModel.java
@@ -27,7 +27,7 @@ import java.util.List;
import java.util.Objects;
import org.jetbrains.annotations.Nullable;
import org.opendc.common.ResourceType;
-import org.opendc.simulator.engine.graph.distributionPolicies.DistributionPolicy;
+import org.opendc.simulator.engine.graph.distributionPolicies.FlowDistributorFactory.DistributionPolicy;
/**
* A description of the physical or virtual machine on which a bootable image runs.
@@ -85,8 +85,8 @@ public final class MachineModel {
cpus.get(0).getArchitecture()),
memory,
null,
- null,
- null);
+ DistributionPolicy.MAX_MIN_FAIRNESS,
+ DistributionPolicy.MAX_MIN_FAIRNESS);
}
/**
diff --git a/opendc-simulator/opendc-simulator-compute/src/main/java/org/opendc/simulator/compute/workload/VirtualMachine.java b/opendc-simulator/opendc-simulator-compute/src/main/java/org/opendc/simulator/compute/workload/VirtualMachine.java
index 8922a97d..a8944efe 100644
--- a/opendc-simulator/opendc-simulator-compute/src/main/java/org/opendc/simulator/compute/workload/VirtualMachine.java
+++ b/opendc-simulator/opendc-simulator-compute/src/main/java/org/opendc/simulator/compute/workload/VirtualMachine.java
@@ -209,7 +209,6 @@ public final class VirtualMachine extends SimWorkload implements FlowSupplier {
long delta = now - lastUpdate;
for (ResourceType resourceType : this.availableResources) {
- int i = 0;
final double factor = this.resourceTimeScalingFactor.get(resourceType) * delta;
if (delta > 0) {
this.resourcePerformanceCounters