summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFabian Mastenbroek <mail.fabianm@gmail.com>2020-03-17 12:07:42 +0100
committerFabian Mastenbroek <mail.fabianm@gmail.com>2020-03-17 12:07:42 +0100
commit22b3568118493f2b3d18b37406e169f19b47a311 (patch)
treed260cd9d013ef33aa3de744f78b1a94ada1266c6
parentdf088c89b43c4bcb5051c42906e91258ccd69ce5 (diff)
parented5438692d74b04a2fc59bdb8e2b223129df8f67 (diff)
Merge branch '2.x-perf-interf-extension' into '2.x'
Apply performance interference only to (on average) one VM See merge request opendc/opendc-simulator!45
-rw-r--r--opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/workload/PerformanceInterferenceModel.kt12
1 files changed, 10 insertions, 2 deletions
diff --git a/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/workload/PerformanceInterferenceModel.kt b/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/workload/PerformanceInterferenceModel.kt
index 78d5cd82..e2032ff1 100644
--- a/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/workload/PerformanceInterferenceModel.kt
+++ b/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/workload/PerformanceInterferenceModel.kt
@@ -1,6 +1,7 @@
package com.atlarge.opendc.core.workload
import com.atlarge.opendc.core.resource.Resource
+import kotlin.random.Random
/**
* Meta-data key for the [PerformanceInterferenceModel] of an image.
@@ -24,10 +25,17 @@ data class PerformanceInterferenceModel(
if (intersectingItems.isEmpty()) {
return 1.0
}
- return intersectingItems
+ val score = intersectingItems
.filter { it.minServerLoad <= currentServerLoad }
.map { it.performanceScore }
- .min() ?: 1.0
+ .min()
+
+ // Apply performance penalty to (on average) only one of the VMs
+ return if (score != null && Random.nextInt(items.size) == 0) {
+ score
+ } else {
+ 1.0
+ }
}
}