From 896c6e2fa2cb84be2f383b39bf81c40101647694 Mon Sep 17 00:00:00 2001 From: Georgios Andreadis Date: Wed, 1 Apr 2020 18:32:04 +0200 Subject: Optimizes the performance interference model logic Credits to Fabian for the idea! --- .../atlarge/opendc/core/workload/PerformanceInterferenceModel.kt | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'opendc/opendc-core') 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 e2032ff1..ea110934 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 @@ -16,12 +16,16 @@ const val IMAGE_PERF_INTERFERENCE_MODEL = "image:performance-interference" data class PerformanceInterferenceModel( val items: Set ) { - fun apply(colocatedWorkloads: Set, currentServerLoad: Double): Double { + private var intersectingItems: List = emptyList() + + fun computeIntersectingItems(colocatedWorkloads: Set) { val colocatedWorkloadIds = colocatedWorkloads.map { it.name } - val intersectingItems = items.filter { item -> + intersectingItems = items.filter { item -> colocatedWorkloadIds.intersect(item.workloadNames).size > 1 } + } + fun apply(currentServerLoad: Double): Double { if (intersectingItems.isEmpty()) { return 1.0 } -- cgit v1.2.3