summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFabian Mastenbroek <mail.fabianm@gmail.com>2021-08-25 18:15:07 +0200
committerFabian Mastenbroek <mail.fabianm@gmail.com>2021-08-25 18:15:07 +0200
commite6dd553cf77445083f2c7632bd3b4c3611d76d0a (patch)
tree555e1c1763b8a16291b957ecd5b2917acf74cf96
parentf111081627280d4e7e1d7147c56cdce708e32433 (diff)
fix(simulator): Eliminate unnecessary double to long conversions
This change eliminates unnecessary double to long conversions in the simulator. Previously, we used longs to denote the amount of work. However, in the mean time we have switched to doubles in the lower stack.
-rw-r--r--opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/SimHost.kt16
-rw-r--r--opendc-simulator/opendc-simulator-compute/src/main/kotlin/org/opendc/simulator/compute/kernel/SimFairShareHypervisor.kt8
-rw-r--r--opendc-simulator/opendc-simulator-compute/src/main/kotlin/org/opendc/simulator/compute/kernel/SimHypervisor.kt8
-rw-r--r--opendc-simulator/opendc-simulator-compute/src/test/kotlin/org/opendc/simulator/compute/kernel/SimHypervisorTest.kt40
4 files changed, 36 insertions, 36 deletions
diff --git a/opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/SimHost.kt b/opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/SimHost.kt
index 546584b6..dcc525cb 100644
--- a/opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/SimHost.kt
+++ b/opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/SimHost.kt
@@ -101,17 +101,17 @@ public class SimHost(
listener = object : SimHypervisor.Listener {
override fun onSliceFinish(
hypervisor: SimHypervisor,
- requestedWork: Long,
- grantedWork: Long,
- overcommittedWork: Long,
- interferedWork: Long,
+ requestedWork: Double,
+ grantedWork: Double,
+ overcommittedWork: Double,
+ interferedWork: Double,
cpuUsage: Double,
cpuDemand: Double
) {
- _totalWork.add(requestedWork.toDouble())
- _grantedWork.add(grantedWork.toDouble())
- _overcommittedWork.add(overcommittedWork.toDouble())
- _interferedWork.add(interferedWork.toDouble())
+ _totalWork.add(requestedWork)
+ _grantedWork.add(grantedWork)
+ _overcommittedWork.add(overcommittedWork)
+ _interferedWork.add(interferedWork)
_cpuDemand.record(cpuDemand)
_cpuUsage.record(cpuUsage)
_powerUsage.record(machine.psu.powerDraw)
diff --git a/opendc-simulator/opendc-simulator-compute/src/main/kotlin/org/opendc/simulator/compute/kernel/SimFairShareHypervisor.kt b/opendc-simulator/opendc-simulator-compute/src/main/kotlin/org/opendc/simulator/compute/kernel/SimFairShareHypervisor.kt
index c31b1f6b..3b44292d 100644
--- a/opendc-simulator/opendc-simulator-compute/src/main/kotlin/org/opendc/simulator/compute/kernel/SimFairShareHypervisor.kt
+++ b/opendc-simulator/opendc-simulator-compute/src/main/kotlin/org/opendc/simulator/compute/kernel/SimFairShareHypervisor.kt
@@ -77,10 +77,10 @@ public class SimFairShareHypervisor(
if (timestamp > lastReport) {
listener.onSliceFinish(
this@SimFairShareHypervisor,
- (counters.demand - lastDemand).toLong(),
- (counters.actual - lastActual).toLong(),
- (counters.overcommit - lastOvercommit).toLong(),
- (counters.interference - lastInterference).toLong(),
+ counters.demand - lastDemand,
+ counters.actual - lastActual,
+ counters.overcommit - lastOvercommit,
+ counters.interference - lastInterference,
lastCpuUsage,
lastCpuDemand
)
diff --git a/opendc-simulator/opendc-simulator-compute/src/main/kotlin/org/opendc/simulator/compute/kernel/SimHypervisor.kt b/opendc-simulator/opendc-simulator-compute/src/main/kotlin/org/opendc/simulator/compute/kernel/SimHypervisor.kt
index d3996914..af28c346 100644
--- a/opendc-simulator/opendc-simulator-compute/src/main/kotlin/org/opendc/simulator/compute/kernel/SimHypervisor.kt
+++ b/opendc-simulator/opendc-simulator-compute/src/main/kotlin/org/opendc/simulator/compute/kernel/SimHypervisor.kt
@@ -64,10 +64,10 @@ public interface SimHypervisor : SimWorkload {
*/
public fun onSliceFinish(
hypervisor: SimHypervisor,
- requestedWork: Long,
- grantedWork: Long,
- overcommittedWork: Long,
- interferedWork: Long,
+ requestedWork: Double,
+ grantedWork: Double,
+ overcommittedWork: Double,
+ interferedWork: Double,
cpuUsage: Double,
cpuDemand: Double
)
diff --git a/opendc-simulator/opendc-simulator-compute/src/test/kotlin/org/opendc/simulator/compute/kernel/SimHypervisorTest.kt b/opendc-simulator/opendc-simulator-compute/src/test/kotlin/org/opendc/simulator/compute/kernel/SimHypervisorTest.kt
index afc4c949..918271d1 100644
--- a/opendc-simulator/opendc-simulator-compute/src/test/kotlin/org/opendc/simulator/compute/kernel/SimHypervisorTest.kt
+++ b/opendc-simulator/opendc-simulator-compute/src/test/kotlin/org/opendc/simulator/compute/kernel/SimHypervisorTest.kt
@@ -68,16 +68,16 @@ internal class SimHypervisorTest {
@Test
fun testOvercommittedSingle() = runBlockingSimulation {
val listener = object : SimHypervisor.Listener {
- var totalRequestedWork = 0L
- var totalGrantedWork = 0L
- var totalOvercommittedWork = 0L
+ var totalRequestedWork = 0.0
+ var totalGrantedWork = 0.0
+ var totalOvercommittedWork = 0.0
override fun onSliceFinish(
hypervisor: SimHypervisor,
- requestedWork: Long,
- grantedWork: Long,
- overcommittedWork: Long,
- interferedWork: Long,
+ requestedWork: Double,
+ grantedWork: Double,
+ overcommittedWork: Double,
+ interferedWork: Double,
cpuUsage: Double,
cpuDemand: Double
) {
@@ -117,9 +117,9 @@ internal class SimHypervisorTest {
machine.close()
assertAll(
- { assertEquals(1113300, listener.totalRequestedWork, "Requested Burst does not match") },
- { assertEquals(1023300, listener.totalGrantedWork, "Granted Burst does not match") },
- { assertEquals(90000, listener.totalOvercommittedWork, "Overcommissioned Burst does not match") },
+ { assertEquals(1113300.0, listener.totalRequestedWork, "Requested Burst does not match") },
+ { assertEquals(1023300.0, listener.totalGrantedWork, "Granted Burst does not match") },
+ { assertEquals(90000.0, listener.totalOvercommittedWork, "Overcommissioned Burst does not match") },
{ assertEquals(listOf(0.0, 0.00875, 1.0, 0.0, 0.0571875, 0.0), res) { "VM usage is correct" } },
{ assertEquals(1200000, clock.millis()) { "Current time is correct" } }
)
@@ -131,16 +131,16 @@ internal class SimHypervisorTest {
@Test
fun testOvercommittedDual() = runBlockingSimulation {
val listener = object : SimHypervisor.Listener {
- var totalRequestedWork = 0L
- var totalGrantedWork = 0L
- var totalOvercommittedWork = 0L
+ var totalRequestedWork = 0.0
+ var totalGrantedWork = 0.0
+ var totalOvercommittedWork = 0.0
override fun onSliceFinish(
hypervisor: SimHypervisor,
- requestedWork: Long,
- grantedWork: Long,
- overcommittedWork: Long,
- interferedWork: Long,
+ requestedWork: Double,
+ grantedWork: Double,
+ overcommittedWork: Double,
+ interferedWork: Double,
cpuUsage: Double,
cpuDemand: Double
) {
@@ -196,9 +196,9 @@ internal class SimHypervisorTest {
yield()
assertAll(
- { assertEquals(2073600, listener.totalRequestedWork, "Requested Burst does not match") },
- { assertEquals(1053600, listener.totalGrantedWork, "Granted Burst does not match") },
- { assertEquals(1020000, listener.totalOvercommittedWork, "Overcommissioned Burst does not match") },
+ { assertEquals(2073600.0, listener.totalRequestedWork, "Requested Burst does not match") },
+ { assertEquals(1053600.0, listener.totalGrantedWork, "Granted Burst does not match") },
+ { assertEquals(1020000.0, listener.totalOvercommittedWork, "Overcommissioned Burst does not match") },
{ assertEquals(1200000, clock.millis()) }
)
}