summaryrefslogtreecommitdiff
path: root/opendc/opendc-format
diff options
context:
space:
mode:
authorGeorgios Andreadis <g.andreadis@student.tudelft.nl>2020-05-17 22:00:20 +0200
committerGeorgios Andreadis <g.andreadis@student.tudelft.nl>2020-05-17 22:00:20 +0200
commitc78d99c198e48dfa1b9f0f22f936ebc9457e5a5b (patch)
tree633cfa8c2331c34c3572ee8e404ff80567010d5a /opendc/opendc-format
parent210ca9d4b82cda82d0651e539c38d36eb61aec1e (diff)
parent2211cc2af7fced34921055e8d5fb5516457b4cc0 (diff)
Merge branch 'feat/database-metrics' into '2.x'
Implement experiment runner in Kotlin Closes #63 See merge request opendc/opendc-simulator!66
Diffstat (limited to 'opendc/opendc-format')
-rw-r--r--opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/PerformanceInterferenceModelReader.kt3
-rw-r--r--opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/bitbrains/BitbrainsTraceReader.kt2
-rw-r--r--opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/sc20/Sc20PerformanceInterferenceReader.kt30
-rw-r--r--opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/sc20/Sc20TraceReader.kt2
4 files changed, 22 insertions, 15 deletions
diff --git a/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/PerformanceInterferenceModelReader.kt b/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/PerformanceInterferenceModelReader.kt
index a653e643..407bc0b4 100644
--- a/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/PerformanceInterferenceModelReader.kt
+++ b/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/PerformanceInterferenceModelReader.kt
@@ -26,6 +26,7 @@ package com.atlarge.opendc.format.trace
import com.atlarge.opendc.compute.core.workload.PerformanceInterferenceModel
import java.io.Closeable
+import kotlin.random.Random
/**
* An interface for reading descriptions of performance interference models into memory.
@@ -34,5 +35,5 @@ interface PerformanceInterferenceModelReader : Closeable {
/**
* Construct a [PerformanceInterferenceModel].
*/
- fun construct(): PerformanceInterferenceModel
+ fun construct(random: Random): Map<String, PerformanceInterferenceModel>
}
diff --git a/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/bitbrains/BitbrainsTraceReader.kt b/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/bitbrains/BitbrainsTraceReader.kt
index 5220af9b..2a8fefeb 100644
--- a/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/bitbrains/BitbrainsTraceReader.kt
+++ b/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/bitbrains/BitbrainsTraceReader.kt
@@ -125,7 +125,7 @@ class BitbrainsTraceReader(
val relevantPerformanceInterferenceModelItems =
PerformanceInterferenceModel(
- performanceInterferenceModel.items.filter { it.workloadNames.contains(vmId.toString()) }.toSet()
+ performanceInterferenceModel.items.filter { it.workloadNames.contains(vmId.toString()) }.toSortedSet()
)
val vmWorkload = VmWorkload(
diff --git a/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/sc20/Sc20PerformanceInterferenceReader.kt b/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/sc20/Sc20PerformanceInterferenceReader.kt
index 8562cefe..0e8e1fd2 100644
--- a/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/sc20/Sc20PerformanceInterferenceReader.kt
+++ b/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/sc20/Sc20PerformanceInterferenceReader.kt
@@ -32,6 +32,7 @@ import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
import com.fasterxml.jackson.module.kotlin.readValue
import java.io.InputStream
import java.util.TreeSet
+import kotlin.random.Random
/**
* A parser for the JSON performance interference setup files used for the SC20 paper.
@@ -42,20 +43,25 @@ import java.util.TreeSet
class Sc20PerformanceInterferenceReader(input: InputStream, mapper: ObjectMapper = jacksonObjectMapper()) :
PerformanceInterferenceModelReader {
/**
- * The environment that was read from the file.
+ * The computed value from the file.
*/
- private val performanceInterferenceModel: List<PerformanceInterferenceEntry> = mapper.readValue(input)
+ private val items: Map<String, TreeSet<PerformanceInterferenceModelItem>>
- override fun construct(): PerformanceInterferenceModel {
- return PerformanceInterferenceModel(
- performanceInterferenceModel.map { item ->
- PerformanceInterferenceModelItem(
- TreeSet(item.vms),
- item.minServerLoad,
- item.performanceScore
- )
- }.toSet()
- )
+ init {
+ val entries: List<PerformanceInterferenceEntry> = mapper.readValue(input)
+ val res = mutableMapOf<String, TreeSet<PerformanceInterferenceModelItem>>()
+ for (entry in entries) {
+ val item = PerformanceInterferenceModelItem(TreeSet(entry.vms), entry.minServerLoad, entry.performanceScore)
+ for (workload in entry.vms) {
+ res.computeIfAbsent(workload) { TreeSet() }.add(item)
+ }
+ }
+
+ items = res
+ }
+
+ override fun construct(random: Random): Map<String, PerformanceInterferenceModel> {
+ return items.mapValues { PerformanceInterferenceModel(it.value, Random(random.nextInt())) }
}
override fun close() {}
diff --git a/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/sc20/Sc20TraceReader.kt b/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/sc20/Sc20TraceReader.kt
index c53cd569..076274d5 100644
--- a/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/sc20/Sc20TraceReader.kt
+++ b/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/sc20/Sc20TraceReader.kt
@@ -160,7 +160,7 @@ class Sc20TraceReader(
val relevantPerformanceInterferenceModelItems =
PerformanceInterferenceModel(
- performanceInterferenceModel.items.filter { it.workloadNames.contains(vmId) }.toSet(),
+ performanceInterferenceModel.items.filter { it.workloadNames.contains(vmId) }.toSortedSet(),
Random(random.nextInt())
)
val vmWorkload = VmWorkload(