From a5f3c19200026b9476edc39b951eb1003cff0831 Mon Sep 17 00:00:00 2001 From: Niels Thiele Date: Tue, 15 Jul 2025 15:53:37 +0200 Subject: Add configurable resource distribution at host level (#355) --- .../bestEffort/dual_core_gpu_host.json | 42 ++++++++++++++++++++++ .../bestEffort/multi_gpu_host.json | 40 +++++++++++++++++++++ .../equalShare/dual_core_gpu_host.json | 41 +++++++++++++++++++++ .../equalShare/multi_gpu_host.json | 42 ++++++++++++++++++++++ .../firstFit/multi_gpu_host.json | 40 +++++++++++++++++++++ .../fixedShare/multi_gpu_host.json | 40 +++++++++++++++++++++ .../maxMinFairness/multi_gpu_host.json | 39 ++++++++++++++++++++ .../topologies/Gpus/dual_core_gpu_host.json | 35 ++++++++++++++++++ .../resources/topologies/Gpus/dual_gpu_host.json | 35 ------------------ 9 files changed, 319 insertions(+), 35 deletions(-) create mode 100644 opendc-experiments/opendc-experiments-base/src/test/resources/topologies/DistributionPolicies/bestEffort/dual_core_gpu_host.json create mode 100644 opendc-experiments/opendc-experiments-base/src/test/resources/topologies/DistributionPolicies/bestEffort/multi_gpu_host.json create mode 100644 opendc-experiments/opendc-experiments-base/src/test/resources/topologies/DistributionPolicies/equalShare/dual_core_gpu_host.json create mode 100644 opendc-experiments/opendc-experiments-base/src/test/resources/topologies/DistributionPolicies/equalShare/multi_gpu_host.json create mode 100644 opendc-experiments/opendc-experiments-base/src/test/resources/topologies/DistributionPolicies/firstFit/multi_gpu_host.json create mode 100644 opendc-experiments/opendc-experiments-base/src/test/resources/topologies/DistributionPolicies/fixedShare/multi_gpu_host.json create mode 100644 opendc-experiments/opendc-experiments-base/src/test/resources/topologies/DistributionPolicies/maxMinFairness/multi_gpu_host.json create mode 100644 opendc-experiments/opendc-experiments-base/src/test/resources/topologies/Gpus/dual_core_gpu_host.json delete mode 100644 opendc-experiments/opendc-experiments-base/src/test/resources/topologies/Gpus/dual_gpu_host.json (limited to 'opendc-experiments/opendc-experiments-base/src/test/resources/topologies') diff --git a/opendc-experiments/opendc-experiments-base/src/test/resources/topologies/DistributionPolicies/bestEffort/dual_core_gpu_host.json b/opendc-experiments/opendc-experiments-base/src/test/resources/topologies/DistributionPolicies/bestEffort/dual_core_gpu_host.json new file mode 100644 index 00000000..a2758fd1 --- /dev/null +++ b/opendc-experiments/opendc-experiments-base/src/test/resources/topologies/DistributionPolicies/bestEffort/dual_core_gpu_host.json @@ -0,0 +1,42 @@ +{ + "clusters": [ + { + "name": "C01", + "hosts": [ + { + "name": "DualGpuHost", + "cpu": { + "coreCount": 4, + "coreSpeed": 2000 + }, + "memory": { + "memorySize": 140457600000 + }, + "cpuPowerModel": { + "modelType": "linear", + "power": 400.0, + "idlePower": 100.0, + "maxPower": 200.0 + }, + "cpuDistributionPolicy": { + "type": "MAX_MIN_FAIRNESS" + }, + "gpu": { + "coreCount": 2, + "coreSpeed": 2000 + }, + "gpuPowerModel": { + "modelType": "linear", + "power": 400.0, + "idlePower": 100.0, + "maxPower": 200.0 + }, + "gpuDistributionPolicy": { + "type": "BEST_EFFORT", + "updateIntervalLength": 60000 + } + } + ] + } + ] +} diff --git a/opendc-experiments/opendc-experiments-base/src/test/resources/topologies/DistributionPolicies/bestEffort/multi_gpu_host.json b/opendc-experiments/opendc-experiments-base/src/test/resources/topologies/DistributionPolicies/bestEffort/multi_gpu_host.json new file mode 100644 index 00000000..8169793d --- /dev/null +++ b/opendc-experiments/opendc-experiments-base/src/test/resources/topologies/DistributionPolicies/bestEffort/multi_gpu_host.json @@ -0,0 +1,40 @@ +{ + "clusters": [ + { + "name": "C01", + "hosts": [ + { + "name": "DualGpuHost", + "cpu": { + "coreCount": 4, + "coreSpeed": 2000 + }, + "memory": { + "memorySize": 140457600000 + }, + "cpuPowerModel": { + "modelType": "linear", + "power": 400.0, + "idlePower": 100.0, + "maxPower": 200.0 + }, + "gpu": { + "count": 2, + "coreCount": 1, + "coreSpeed": 2000 + }, + "gpuPowerModel": { + "modelType": "linear", + "power": 400.0, + "idlePower": 100.0, + "maxPower": 200.0 + }, + "gpuDistributionPolicy": { + "type": "BEST_EFFORT", + "updateIntervalLength": 60000 + } + } + ] + } + ] +} diff --git a/opendc-experiments/opendc-experiments-base/src/test/resources/topologies/DistributionPolicies/equalShare/dual_core_gpu_host.json b/opendc-experiments/opendc-experiments-base/src/test/resources/topologies/DistributionPolicies/equalShare/dual_core_gpu_host.json new file mode 100644 index 00000000..aa128cba --- /dev/null +++ b/opendc-experiments/opendc-experiments-base/src/test/resources/topologies/DistributionPolicies/equalShare/dual_core_gpu_host.json @@ -0,0 +1,41 @@ +{ + "clusters": [ + { + "name": "C01", + "hosts": [ + { + "name": "DualGpuHost", + "cpu": { + "coreCount": 4, + "coreSpeed": 2000 + }, + "memory": { + "memorySize": 140457600000 + }, + "cpuPowerModel": { + "modelType": "linear", + "power": 400.0, + "idlePower": 100.0, + "maxPower": 200.0 + }, + "cpuDistributionPolicy": { + "type": "MAX_MIN_FAIRNESS" + }, + "gpu": { + "coreCount": 2, + "coreSpeed": 2000 + }, + "gpuPowerModel": { + "modelType": "linear", + "power": 400.0, + "idlePower": 100.0, + "maxPower": 200.0 + }, + "gpuDistributionPolicy": { + "type": "EQUAL_SHARE" + } + } + ] + } + ] +} diff --git a/opendc-experiments/opendc-experiments-base/src/test/resources/topologies/DistributionPolicies/equalShare/multi_gpu_host.json b/opendc-experiments/opendc-experiments-base/src/test/resources/topologies/DistributionPolicies/equalShare/multi_gpu_host.json new file mode 100644 index 00000000..59b0dbd2 --- /dev/null +++ b/opendc-experiments/opendc-experiments-base/src/test/resources/topologies/DistributionPolicies/equalShare/multi_gpu_host.json @@ -0,0 +1,42 @@ +{ + "clusters": [ + { + "name": "C01", + "hosts": [ + { + "name": "DualGpuHost", + "cpu": { + "coreCount": 4, + "coreSpeed": 2000 + }, + "memory": { + "memorySize": 140457600000 + }, + "cpuPowerModel": { + "modelType": "linear", + "power": 400.0, + "idlePower": 100.0, + "maxPower": 200.0 + }, + "cpuDistributionPolicy": { + "type": "MAX_MIN_FAIRNESS" + }, + "gpu": { + "count": 2, + "coreCount": 1, + "coreSpeed": 2000 + }, + "gpuPowerModel": { + "modelType": "linear", + "power": 400.0, + "idlePower": 100.0, + "maxPower": 200.0 + }, + "gpuDistributionPolicy": { + "type": "EQUAL_SHARE" + } + } + ] + } + ] +} diff --git a/opendc-experiments/opendc-experiments-base/src/test/resources/topologies/DistributionPolicies/firstFit/multi_gpu_host.json b/opendc-experiments/opendc-experiments-base/src/test/resources/topologies/DistributionPolicies/firstFit/multi_gpu_host.json new file mode 100644 index 00000000..306431ca --- /dev/null +++ b/opendc-experiments/opendc-experiments-base/src/test/resources/topologies/DistributionPolicies/firstFit/multi_gpu_host.json @@ -0,0 +1,40 @@ +{ + "clusters": [ + { + "name": "C01", + "hosts": [ + { + "name": "DualGpuHost", + "cpu": { + "coreCount": 4, + "coreSpeed": 2000 + }, + "memory": { + "memorySize": 140457600000 + }, + "cpuPowerModel": { + "modelType": "linear", + "power": 400.0, + "idlePower": 100.0, + "maxPower": 200.0 + }, + "gpu": { + "count": 2, + "coreCount": 1, + "coreSpeed": 2000 + }, + "gpuPowerModel": { + "modelType": "linear", + "power": 400.0, + "idlePower": 100.0, + "maxPower": 200.0 + }, + "gpuDistributionPolicy": { + "type": "FIRST_FIT" + } + } + ] + } + ] +} + diff --git a/opendc-experiments/opendc-experiments-base/src/test/resources/topologies/DistributionPolicies/fixedShare/multi_gpu_host.json b/opendc-experiments/opendc-experiments-base/src/test/resources/topologies/DistributionPolicies/fixedShare/multi_gpu_host.json new file mode 100644 index 00000000..2aa3a057 --- /dev/null +++ b/opendc-experiments/opendc-experiments-base/src/test/resources/topologies/DistributionPolicies/fixedShare/multi_gpu_host.json @@ -0,0 +1,40 @@ +{ + "clusters": [ + { + "name": "C01", + "hosts": [ + { + "name": "DualGpuHost", + "cpu": { + "coreCount": 4, + "coreSpeed": 2000 + }, + "memory": { + "memorySize": 140457600000 + }, + "cpuPowerModel": { + "modelType": "linear", + "power": 400.0, + "idlePower": 100.0, + "maxPower": 200.0 + }, + "gpu": { + "count": 2, + "coreCount": 1, + "coreSpeed": 2000 + }, + "gpuPowerModel": { + "modelType": "linear", + "power": 400.0, + "idlePower": 100.0, + "maxPower": 200.0 + }, + "gpuDistributionPolicy": { + "type": "FIXED_SHARE", + "shareRatio": 0.5 + } + } + ] + } + ] +} diff --git a/opendc-experiments/opendc-experiments-base/src/test/resources/topologies/DistributionPolicies/maxMinFairness/multi_gpu_host.json b/opendc-experiments/opendc-experiments-base/src/test/resources/topologies/DistributionPolicies/maxMinFairness/multi_gpu_host.json new file mode 100644 index 00000000..74df2f8c --- /dev/null +++ b/opendc-experiments/opendc-experiments-base/src/test/resources/topologies/DistributionPolicies/maxMinFairness/multi_gpu_host.json @@ -0,0 +1,39 @@ +{ + "clusters": [ + { + "name": "C01", + "hosts": [ + { + "name": "DualGpuHost", + "cpu": { + "coreCount": 4, + "coreSpeed": 2000 + }, + "memory": { + "memorySize": 140457600000 + }, + "cpuPowerModel": { + "modelType": "linear", + "power": 400.0, + "idlePower": 100.0, + "maxPower": 200.0 + }, + "gpu": { + "count": 2, + "coreCount": 1, + "coreSpeed": 2000 + }, + "gpuPowerModel": { + "modelType": "linear", + "power": 400.0, + "idlePower": 100.0, + "maxPower": 200.0 + }, + "gpuDistributionPolicy": { + "type": "MAX_MIN_FAIRNESS" + } + } + ] + } + ] +} diff --git a/opendc-experiments/opendc-experiments-base/src/test/resources/topologies/Gpus/dual_core_gpu_host.json b/opendc-experiments/opendc-experiments-base/src/test/resources/topologies/Gpus/dual_core_gpu_host.json new file mode 100644 index 00000000..c5271ff8 --- /dev/null +++ b/opendc-experiments/opendc-experiments-base/src/test/resources/topologies/Gpus/dual_core_gpu_host.json @@ -0,0 +1,35 @@ +{ + "clusters": [ + { + "name": "C01", + "hosts": [ + { + "name": "DualGpuHost", + "cpu": { + "coreCount": 4, + "coreSpeed": 2000 + }, + "memory": { + "memorySize": 140457600000 + }, + "cpuPowerModel": { + "modelType": "linear", + "power": 400.0, + "idlePower": 100.0, + "maxPower": 200.0 + }, + "gpu": { + "coreCount": 2, + "coreSpeed": 2000 + }, + "gpuPowerModel": { + "modelType": "linear", + "power": 400.0, + "idlePower": 100.0, + "maxPower": 200.0 + } + } + ] + } + ] +} diff --git a/opendc-experiments/opendc-experiments-base/src/test/resources/topologies/Gpus/dual_gpu_host.json b/opendc-experiments/opendc-experiments-base/src/test/resources/topologies/Gpus/dual_gpu_host.json deleted file mode 100644 index c5271ff8..00000000 --- a/opendc-experiments/opendc-experiments-base/src/test/resources/topologies/Gpus/dual_gpu_host.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "clusters": [ - { - "name": "C01", - "hosts": [ - { - "name": "DualGpuHost", - "cpu": { - "coreCount": 4, - "coreSpeed": 2000 - }, - "memory": { - "memorySize": 140457600000 - }, - "cpuPowerModel": { - "modelType": "linear", - "power": 400.0, - "idlePower": 100.0, - "maxPower": 200.0 - }, - "gpu": { - "coreCount": 2, - "coreSpeed": 2000 - }, - "gpuPowerModel": { - "modelType": "linear", - "power": 400.0, - "idlePower": 100.0, - "maxPower": 200.0 - } - } - ] - } - ] -} -- cgit v1.2.3