diff options
| author | Dante Niewenhuis <d.niewenhuis@hotmail.com> | 2025-10-02 15:32:32 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-10-02 15:32:32 +0200 |
| commit | 48ddc082ea301f54717a8ab7c54023f73220e4eb (patch) | |
| tree | e76ee573abde2fe1d8ca874d33b34cba72e478c8 /opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments | |
| parent | 2ba57fd06560f096def01a31f8e47827f0f01da0 (diff) | |
Improved FilterScheduler using a constantly sorting array (#374)
Updated FilterScheduler.kt for performance using a constantly sorted Array
Diffstat (limited to 'opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments')
2 files changed, 6 insertions, 2 deletions
diff --git a/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/experiment/specs/allocation/AllocationPolicySpec.kt b/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/experiment/specs/allocation/AllocationPolicySpec.kt index 8ea0a31e..afe15032 100644 --- a/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/experiment/specs/allocation/AllocationPolicySpec.kt +++ b/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/experiment/specs/allocation/AllocationPolicySpec.kt @@ -76,13 +76,14 @@ public fun createComputeScheduler( spec: AllocationPolicySpec, seeder: RandomGenerator, clock: InstantSource, + numHosts: Int = 1000, ): ComputeScheduler { return when (spec) { - is PrefabAllocationPolicySpec -> createPrefabComputeScheduler(spec.policyName, seeder, clock) + is PrefabAllocationPolicySpec -> createPrefabComputeScheduler(spec.policyName, seeder, clock, numHosts) is FilterAllocationPolicySpec -> { val filters = spec.filters.map { createHostFilter(it) } val weighers = spec.weighers.map { createHostWeigher(it) } - FilterScheduler(filters, weighers, spec.subsetSize, seeder) + FilterScheduler(filters, weighers, spec.subsetSize, seeder, numHosts) } is TimeShiftAllocationPolicySpec -> { val filters = spec.filters.map { createHostFilter(it) } diff --git a/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/runner/ScenarioRunner.kt b/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/runner/ScenarioRunner.kt index 4f845e01..ffa31f57 100644 --- a/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/runner/ScenarioRunner.kt +++ b/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/runner/ScenarioRunner.kt @@ -107,6 +107,8 @@ public fun runScenario( val startTime = Duration.ofMillis(startTimeLong) val topology = clusterTopology(scenario.topologySpec.pathToFile) + + val numHosts = topology.sumOf { it.hostSpecs.size } provisioner.runSteps( setupComputeService( serviceDomain, @@ -116,6 +118,7 @@ public fun runScenario( scenario.allocationPolicySpec, Random(it.seeder.nextLong()), timeSource, + numHosts, ) provisioner.registry.register(serviceDomain, ComputeScheduler::class.java, computeScheduler) |
