diff options
| author | Dante Niewenhuis <d.niewenhuis@hotmail.com> | 2024-08-27 13:48:46 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-08-27 13:48:46 +0200 |
| commit | 3363df4c72a064e590ca98f8e01832cfa4e15a3f (patch) | |
| tree | 9a938700fe08ce344ff5d0d475d0b64d7233d1fc /opendc-compute/opendc-compute-service/src/main/kotlin | |
| parent | c21708013f2746807f5bdb3fc47c2b47ed15b7c8 (diff) | |
Renamed input files and internally server is changed to task (#246)
* Updated SimTrace to use a single ArrayDeque instead of three separate lists for deadline, cpuUsage, and coreCount
* Renamed input files to tasks.parquet and fragments.parquet. Renamed server to task. OpenDC nows exports tasks.parquet instead of server.parquet
Diffstat (limited to 'opendc-compute/opendc-compute-service/src/main/kotlin')
17 files changed, 59 insertions, 59 deletions
diff --git a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/ComputeScheduler.kt b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/ComputeScheduler.kt index 0ccaf991..42de9ebc 100644 --- a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/ComputeScheduler.kt +++ b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/ComputeScheduler.kt @@ -22,12 +22,12 @@ package org.opendc.compute.service.scheduler -import org.opendc.compute.api.Server +import org.opendc.compute.api.Task import org.opendc.compute.service.ComputeService import org.opendc.compute.service.HostView /** - * A generic scheduler interface used by the [ComputeService] to select hosts to place [Server]s on. + * A generic scheduler interface used by the [ComputeService] to select hosts to place [Task]s on. */ public interface ComputeScheduler { /** @@ -41,10 +41,10 @@ public interface ComputeScheduler { public fun removeHost(host: HostView) /** - * Select a host for the specified [server]. + * Select a host for the specified [task]. * - * @param server The server to select a host for. + * @param task The server to select a host for. * @return The host to schedule the server on or `null` if no server is available. */ - public fun select(server: Server): HostView? + public fun select(task: Task): HostView? } diff --git a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/FilterScheduler.kt b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/FilterScheduler.kt index 41118386..772a470d 100644 --- a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/FilterScheduler.kt +++ b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/FilterScheduler.kt @@ -22,7 +22,7 @@ package org.opendc.compute.service.scheduler -import org.opendc.compute.api.Server +import org.opendc.compute.api.Task import org.opendc.compute.service.HostView import org.opendc.compute.service.scheduler.filters.HostFilter import org.opendc.compute.service.scheduler.weights.HostWeigher @@ -32,7 +32,7 @@ import kotlin.math.min /** * A [ComputeScheduler] implementation that uses filtering and weighing passes to select - * the host to schedule a [Server] on. + * the host to schedule a [Task] on. * * This implementation is based on the filter scheduler from OpenStack Nova. * See: https://docs.openstack.org/nova/latest/user/filter-scheduler.html @@ -65,13 +65,13 @@ public class FilterScheduler( hosts.remove(host) } - override fun select(server: Server): HostView? { + override fun select(task: Task): HostView? { val hosts = hosts - val filteredHosts = hosts.filter { host -> filters.all { filter -> filter.test(host, server) } } + val filteredHosts = hosts.filter { host -> filters.all { filter -> filter.test(host, task) } } val subset = if (weighers.isNotEmpty()) { - val results = weighers.map { it.getWeights(filteredHosts, server) } + val results = weighers.map { it.getWeights(filteredHosts, task) } val weights = DoubleArray(filteredHosts.size) for (result in results) { diff --git a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/ReplayScheduler.kt b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/ReplayScheduler.kt index a6703c89..d1690ddf 100644 --- a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/ReplayScheduler.kt +++ b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/ReplayScheduler.kt @@ -23,7 +23,7 @@ package org.opendc.compute.service.scheduler import mu.KotlinLogging -import org.opendc.compute.api.Server +import org.opendc.compute.api.Task import org.opendc.compute.service.HostView /** @@ -48,14 +48,14 @@ public class ReplayScheduler(private val vmPlacements: Map<String, String>) : Co hosts.remove(host) } - override fun select(server: Server): HostView? { + override fun select(task: Task): HostView? { val clusterName = - vmPlacements[server.name] - ?: throw IllegalStateException("Could not find placement data in VM placement file for VM ${server.name}") + vmPlacements[task.name] + ?: throw IllegalStateException("Could not find placement data in VM placement file for VM ${task.name}") val machinesInCluster = hosts.filter { it.host.name.contains(clusterName) } if (machinesInCluster.isEmpty()) { - logger.info { "Could not find any machines belonging to cluster $clusterName for image ${server.name}, assigning randomly." } + logger.info { "Could not find any machines belonging to cluster $clusterName for image ${task.name}, assigning randomly." } return hosts.maxByOrNull { it.availableMemory } } diff --git a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/ComputeFilter.kt b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/ComputeFilter.kt index dd707f60..2ad626f3 100644 --- a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/ComputeFilter.kt +++ b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/ComputeFilter.kt @@ -22,7 +22,7 @@ package org.opendc.compute.service.scheduler.filters -import org.opendc.compute.api.Server +import org.opendc.compute.api.Task import org.opendc.compute.service.HostView import org.opendc.compute.service.driver.HostState @@ -32,7 +32,7 @@ import org.opendc.compute.service.driver.HostState public class ComputeFilter : HostFilter { override fun test( host: HostView, - server: Server, + task: Task, ): Boolean { val result = host.host.state == HostState.UP return result diff --git a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/DifferentHostFilter.kt b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/DifferentHostFilter.kt index df67a19f..ffafeaa9 100644 --- a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/DifferentHostFilter.kt +++ b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/DifferentHostFilter.kt @@ -22,7 +22,7 @@ package org.opendc.compute.service.scheduler.filters -import org.opendc.compute.api.Server +import org.opendc.compute.api.Task import org.opendc.compute.service.HostView import java.util.UUID @@ -32,10 +32,10 @@ import java.util.UUID public class DifferentHostFilter : HostFilter { override fun test( host: HostView, - server: Server, + task: Task, ): Boolean { @Suppress("UNCHECKED_CAST") - val affinityUUIDs = server.meta["scheduler_hint:different_host"] as? Set<UUID> ?: return true + val affinityUUIDs = task.meta["scheduler_hint:different_host"] as? Set<UUID> ?: return true return host.host.instances.none { it.uid in affinityUUIDs } } } diff --git a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/HostFilter.kt b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/HostFilter.kt index 902c760e..f506127a 100644 --- a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/HostFilter.kt +++ b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/HostFilter.kt @@ -22,7 +22,7 @@ package org.opendc.compute.service.scheduler.filters -import org.opendc.compute.api.Server +import org.opendc.compute.api.Task import org.opendc.compute.service.HostView import org.opendc.compute.service.scheduler.FilterScheduler @@ -32,10 +32,10 @@ import org.opendc.compute.service.scheduler.FilterScheduler public fun interface HostFilter { /** * Test whether the specified [host] should be included in the selection - * for scheduling the specified [server]. + * for scheduling the specified [task]. */ public fun test( host: HostView, - server: Server, + task: Task, ): Boolean } diff --git a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/InstanceCountFilter.kt b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/InstanceCountFilter.kt index d9348802..7d5eb400 100644 --- a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/InstanceCountFilter.kt +++ b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/InstanceCountFilter.kt @@ -22,7 +22,7 @@ package org.opendc.compute.service.scheduler.filters -import org.opendc.compute.api.Server +import org.opendc.compute.api.Task import org.opendc.compute.service.HostView /** @@ -33,7 +33,7 @@ import org.opendc.compute.service.HostView public class InstanceCountFilter(private val limit: Int) : HostFilter { override fun test( host: HostView, - server: Server, + task: Task, ): Boolean { return host.instanceCount < limit } diff --git a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/RamFilter.kt b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/RamFilter.kt index d8c3d540..0a28ccc6 100644 --- a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/RamFilter.kt +++ b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/RamFilter.kt @@ -22,20 +22,20 @@ package org.opendc.compute.service.scheduler.filters -import org.opendc.compute.api.Server +import org.opendc.compute.api.Task import org.opendc.compute.service.HostView /** - * A [HostFilter] that filters hosts based on the memory requirements of a [Server] and the RAM available on the host. + * A [HostFilter] that filters hosts based on the memory requirements of a [Task] and the RAM available on the host. * * @param allocationRatio Virtual RAM to physical RAM allocation ratio. */ public class RamFilter(private val allocationRatio: Double) : HostFilter { override fun test( host: HostView, - server: Server, + task: Task, ): Boolean { - val requestedMemory = server.flavor.memorySize + val requestedMemory = task.flavor.memorySize val availableMemory = host.availableMemory val memoryCapacity = host.host.model.memoryCapacity diff --git a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/SameHostFilter.kt b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/SameHostFilter.kt index 4c31c66a..d8634285 100644 --- a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/SameHostFilter.kt +++ b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/SameHostFilter.kt @@ -22,7 +22,7 @@ package org.opendc.compute.service.scheduler.filters -import org.opendc.compute.api.Server +import org.opendc.compute.api.Task import org.opendc.compute.service.HostView import java.util.UUID @@ -32,10 +32,10 @@ import java.util.UUID public class SameHostFilter : HostFilter { override fun test( host: HostView, - server: Server, + task: Task, ): Boolean { @Suppress("UNCHECKED_CAST") - val affinityUUIDs = server.meta["scheduler_hint:same_host"] as? Set<UUID> ?: return true + val affinityUUIDs = task.meta["scheduler_hint:same_host"] as? Set<UUID> ?: return true return host.host.instances.any { it.uid in affinityUUIDs } } } diff --git a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/VCpuCapacityFilter.kt b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/VCpuCapacityFilter.kt index 01ece80e..f87658cd 100644 --- a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/VCpuCapacityFilter.kt +++ b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/VCpuCapacityFilter.kt @@ -22,22 +22,22 @@ package org.opendc.compute.service.scheduler.filters -import org.opendc.compute.api.Server +import org.opendc.compute.api.Task import org.opendc.compute.service.HostView /** - * A [HostFilter] that filters hosts based on the vCPU speed requirements of a [Server] and the available + * A [HostFilter] that filters hosts based on the vCPU speed requirements of a [Task] and the available * capacity on the host. */ public class VCpuCapacityFilter : HostFilter { override fun test( host: HostView, - server: Server, + task: Task, ): Boolean { - val requiredCapacity = server.flavor.meta["cpu-capacity"] as? Double + val requiredCapacity = task.flavor.meta["cpu-capacity"] as? Double val hostModel = host.host.model val availableCapacity = hostModel.cpuCapacity / hostModel.cpuCount - return requiredCapacity == null || availableCapacity >= (requiredCapacity / server.flavor.coreCount) + return requiredCapacity == null || availableCapacity >= (requiredCapacity / task.flavor.coreCount) } } diff --git a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/VCpuFilter.kt b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/VCpuFilter.kt index cefb3f7a..442e58f6 100644 --- a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/VCpuFilter.kt +++ b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/filters/VCpuFilter.kt @@ -22,20 +22,20 @@ package org.opendc.compute.service.scheduler.filters -import org.opendc.compute.api.Server +import org.opendc.compute.api.Task import org.opendc.compute.service.HostView /** - * A [HostFilter] that filters hosts based on the vCPU requirements of a [Server] and the available vCPUs on the host. + * A [HostFilter] that filters hosts based on the vCPU requirements of a [Task] and the available vCPUs on the host. * * @param allocationRatio Virtual CPU to physical CPU allocation ratio. */ public class VCpuFilter(private val allocationRatio: Double) : HostFilter { override fun test( host: HostView, - server: Server, + task: Task, ): Boolean { - val requested = server.flavor.coreCount + val requested = task.flavor.coreCount val totalCores = host.host.model.coreCount val limit = totalCores * allocationRatio diff --git a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/weights/CoreRamWeigher.kt b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/weights/CoreRamWeigher.kt index d6aafbc7..d84f5e68 100644 --- a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/weights/CoreRamWeigher.kt +++ b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/weights/CoreRamWeigher.kt @@ -22,7 +22,7 @@ package org.opendc.compute.service.scheduler.weights -import org.opendc.compute.api.Server +import org.opendc.compute.api.Task import org.opendc.compute.service.HostView /** @@ -35,7 +35,7 @@ import org.opendc.compute.service.HostView public class CoreRamWeigher(override val multiplier: Double = 1.0) : HostWeigher { override fun getWeight( host: HostView, - server: Server, + task: Task, ): Double { return host.availableMemory.toDouble() / host.host.model.cpuCount } diff --git a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/weights/HostWeigher.kt b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/weights/HostWeigher.kt index 825cfff9..3f2c4123 100644 --- a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/weights/HostWeigher.kt +++ b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/weights/HostWeigher.kt @@ -22,7 +22,7 @@ package org.opendc.compute.service.scheduler.weights -import org.opendc.compute.api.Server +import org.opendc.compute.api.Task import org.opendc.compute.service.HostView import org.opendc.compute.service.scheduler.FilterScheduler @@ -36,26 +36,26 @@ public interface HostWeigher { public val multiplier: Double /** - * Obtain the weight of the specified [host] when scheduling the specified [server]. + * Obtain the weight of the specified [host] when scheduling the specified [task]. */ public fun getWeight( host: HostView, - server: Server, + task: Task, ): Double /** - * Obtain the weights for [hosts] when scheduling the specified [server]. + * Obtain the weights for [hosts] when scheduling the specified [task]. */ public fun getWeights( hosts: List<HostView>, - server: Server, + task: Task, ): Result { val weights = DoubleArray(hosts.size) var min = Double.MAX_VALUE var max = Double.MIN_VALUE for ((i, host) in hosts.withIndex()) { - val weight = getWeight(host, server) + val weight = getWeight(host, task) weights[i] = weight min = kotlin.math.min(min, weight) max = kotlin.math.max(max, weight) diff --git a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/weights/InstanceCountWeigher.kt b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/weights/InstanceCountWeigher.kt index 9e0a9517..0789f109 100644 --- a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/weights/InstanceCountWeigher.kt +++ b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/weights/InstanceCountWeigher.kt @@ -22,7 +22,7 @@ package org.opendc.compute.service.scheduler.weights -import org.opendc.compute.api.Server +import org.opendc.compute.api.Task import org.opendc.compute.service.HostView /** @@ -31,7 +31,7 @@ import org.opendc.compute.service.HostView public class InstanceCountWeigher(override val multiplier: Double = 1.0) : HostWeigher { override fun getWeight( host: HostView, - server: Server, + task: Task, ): Double { return host.instanceCount.toDouble() } diff --git a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/weights/RamWeigher.kt b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/weights/RamWeigher.kt index fca2e893..fb03d064 100644 --- a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/weights/RamWeigher.kt +++ b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/weights/RamWeigher.kt @@ -22,7 +22,7 @@ package org.opendc.compute.service.scheduler.weights -import org.opendc.compute.api.Server +import org.opendc.compute.api.Task import org.opendc.compute.service.HostView /** @@ -34,7 +34,7 @@ import org.opendc.compute.service.HostView public class RamWeigher(override val multiplier: Double = 1.0) : HostWeigher { override fun getWeight( host: HostView, - server: Server, + task: Task, ): Double { return host.availableMemory.toDouble() } diff --git a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/weights/VCpuCapacityWeigher.kt b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/weights/VCpuCapacityWeigher.kt index 242660c3..6d1482ff 100644 --- a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/weights/VCpuCapacityWeigher.kt +++ b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/weights/VCpuCapacityWeigher.kt @@ -22,7 +22,7 @@ package org.opendc.compute.service.scheduler.weights -import org.opendc.compute.api.Server +import org.opendc.compute.api.Task import org.opendc.compute.service.HostView /** @@ -31,11 +31,11 @@ import org.opendc.compute.service.HostView public class VCpuCapacityWeigher(override val multiplier: Double = 1.0) : HostWeigher { override fun getWeight( host: HostView, - server: Server, + task: Task, ): Double { val model = host.host.model - val requiredCapacity = server.flavor.meta["cpu-capacity"] as? Double ?: 0.0 - return model.cpuCapacity / model.cpuCount - requiredCapacity / server.flavor.coreCount + val requiredCapacity = task.flavor.meta["cpu-capacity"] as? Double ?: 0.0 + return model.cpuCapacity / model.cpuCount - requiredCapacity / task.flavor.coreCount } override fun toString(): String = "VCpuWeigher" diff --git a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/weights/VCpuWeigher.kt b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/weights/VCpuWeigher.kt index be93458f..dfc30b54 100644 --- a/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/weights/VCpuWeigher.kt +++ b/opendc-compute/opendc-compute-service/src/main/kotlin/org/opendc/compute/service/scheduler/weights/VCpuWeigher.kt @@ -22,7 +22,7 @@ package org.opendc.compute.service.scheduler.weights -import org.opendc.compute.api.Server +import org.opendc.compute.api.Task import org.opendc.compute.service.HostView /** @@ -37,7 +37,7 @@ public class VCpuWeigher(private val allocationRatio: Double, override val multi override fun getWeight( host: HostView, - server: Server, + task: Task, ): Double { return host.host.model.cpuCount * allocationRatio - host.provisionedCores } |
