From 1200816b7bf5c76b6bbb91b7e4555e9f04ea1af9 Mon Sep 17 00:00:00 2001 From: Fabian Mastenbroek Date: Wed, 11 Mar 2020 11:54:03 +0100 Subject: feat: Use linear power model for SC20 experiments --- .../atlarge/opendc/compute/metal/driver/SimpleBareMetalDriver.kt | 2 +- .../kotlin/com/atlarge/opendc/compute/metal/power/PowerModels.kt | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) (limited to 'opendc/opendc-compute/src') diff --git a/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/driver/SimpleBareMetalDriver.kt b/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/driver/SimpleBareMetalDriver.kt index 637432db..cd3e9a48 100644 --- a/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/driver/SimpleBareMetalDriver.kt +++ b/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/driver/SimpleBareMetalDriver.kt @@ -209,7 +209,7 @@ public class SimpleBareMetalDriver( } } - usageSignal.value = totalUsage + usageSignal.value = totalUsage / cpus.size try { delay(duration) diff --git a/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/power/PowerModels.kt b/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/power/PowerModels.kt index 10390cd8..9ddbe08e 100644 --- a/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/power/PowerModels.kt +++ b/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/power/PowerModels.kt @@ -36,7 +36,10 @@ public fun ConstantPowerModel(value: Double): PowerModel = { _ /** * A power model that assumes a naive linear relation between power usage and host CPU utilization. + * + * @param idle The power draw in Watts on idle. + * @param max The maximum power draw in Watts of the server. */ -public fun LinearLoadPowerModel(base: Double, multiplier: Double): PowerModel = { driver -> - driver.usage.map { load -> base + multiplier * load } +public fun LinearLoadPowerModel(idle: Double, max: Double): PowerModel = { driver -> + driver.usage.map { load -> (max - idle) * load + idle } } -- cgit v1.2.3