summaryrefslogtreecommitdiff
path: root/simulator/opendc
diff options
context:
space:
mode:
Diffstat (limited to 'simulator/opendc')
-rw-r--r--simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/workload/PerformanceInterferenceModel.kt11
-rw-r--r--simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/trace/WorkloadSampler.kt4
2 files changed, 7 insertions, 8 deletions
diff --git a/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/workload/PerformanceInterferenceModel.kt b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/workload/PerformanceInterferenceModel.kt
index f458877b..e1f03d21 100644
--- a/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/workload/PerformanceInterferenceModel.kt
+++ b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/workload/PerformanceInterferenceModel.kt
@@ -25,8 +25,7 @@
package com.atlarge.opendc.compute.core.workload
import com.atlarge.opendc.compute.core.Server
-import java.util.SortedSet
-import java.util.TreeSet
+import java.util.*
import kotlin.random.Random
/**
@@ -44,21 +43,21 @@ class PerformanceInterferenceModel(
val random: Random = Random(0)
) {
private var intersectingItems: List<PerformanceInterferenceModelItem> = emptyList()
- private val colocatedWorkloads = TreeSet<String>()
+ private val colocatedWorkloads = TreeMap<String, Int>()
fun vmStarted(server: Server) {
- colocatedWorkloads.add(server.image.name)
+ colocatedWorkloads.merge(server.image.name, 1, Int::plus)
intersectingItems = items.filter { item -> doesMatch(item) }
}
fun vmStopped(server: Server) {
- colocatedWorkloads.remove(server.image.name)
+ colocatedWorkloads.computeIfPresent(server.image.name) { _, v -> (v - 1).takeUnless { it == 0 } }
intersectingItems = items.filter { item -> doesMatch(item) }
}
private fun doesMatch(item: PerformanceInterferenceModelItem): Boolean {
var count = 0
- for (name in item.workloadNames.subSet(colocatedWorkloads.first(), colocatedWorkloads.last() + "\u0000")) {
+ for (name in item.workloadNames.subSet(colocatedWorkloads.firstKey(), colocatedWorkloads.lastKey() + "\u0000")) {
if (name in colocatedWorkloads)
count++
if (count > 1)
diff --git a/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/trace/WorkloadSampler.kt b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/trace/WorkloadSampler.kt
index 99830717..a46bb3e6 100644
--- a/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/trace/WorkloadSampler.kt
+++ b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/trace/WorkloadSampler.kt
@@ -201,13 +201,13 @@ private fun sample(entry: TraceEntry<VmWorkload>, i: Int): TraceEntry<VmWorkload
val id = UUID.nameUUIDFromBytes("${entry.workload.image.uid}-$i".toByteArray())
val image = VmImage(
id,
- entry.workload.image.name + "-$i",
+ entry.workload.image.name,
entry.workload.image.tags,
entry.workload.image.flopsHistory,
entry.workload.image.maxCores,
entry.workload.image.requiredMemory
)
- val vmWorkload = entry.workload.copy(uid = id, image = image, name = entry.workload.name + "-$i")
+ val vmWorkload = entry.workload.copy(uid = id, image = image, name = entry.workload.name)
return VmTraceEntry(vmWorkload, entry.submissionTime)
}