summaryrefslogtreecommitdiff
path: root/opendc/opendc-compute/src/main
diff options
context:
space:
mode:
authorFabian Mastenbroek <mail.fabianm@gmail.com>2020-03-11 11:54:03 +0100
committerFabian Mastenbroek <mail.fabianm@gmail.com>2020-03-11 11:54:03 +0100
commit1200816b7bf5c76b6bbb91b7e4555e9f04ea1af9 (patch)
treeb03bbf6dc69cc2d2c7fcfda1ad0b081c91443312 /opendc/opendc-compute/src/main
parentfb8303b734af0f02a3f798e57cde53ab92f30e0a (diff)
feat: Use linear power model for SC20 experiments
Diffstat (limited to 'opendc/opendc-compute/src/main')
-rw-r--r--opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/driver/SimpleBareMetalDriver.kt2
-rw-r--r--opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/power/PowerModels.kt7
2 files changed, 6 insertions, 3 deletions
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<BareMetalDriver> = { _
/**
* 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<BareMetalDriver> = { driver ->
- driver.usage.map { load -> base + multiplier * load }
+public fun LinearLoadPowerModel(idle: Double, max: Double): PowerModel<BareMetalDriver> = { driver ->
+ driver.usage.map { load -> (max - idle) * load + idle }
}