summaryrefslogtreecommitdiff
path: root/simulator/opendc-format/src
diff options
context:
space:
mode:
authorFabian Mastenbroek <mail.fabianm@gmail.com>2021-03-02 17:46:43 +0100
committerFabian Mastenbroek <mail.fabianm@gmail.com>2021-03-07 16:10:08 +0100
commit58c73773a75a0e0a8f85217e2e97c64128ce8ab8 (patch)
treee93ab16ebe650218d3d8abc7c18020addef5d97e /simulator/opendc-format/src
parent2977dd8a5f1d742193eae79364a284e68269f7b5 (diff)
compute: Pass simulation workload via image metadata
This change removes the SimWorkloadImage implementation and changes Image to a data class without workload. Simulation workloads should now be pased via image metadata as the image storage should be unaware of any simulation details.
Diffstat (limited to 'simulator/opendc-format/src')
-rw-r--r--simulator/opendc-format/src/main/kotlin/org/opendc/format/trace/bitbrains/BitbrainsTraceReader.kt11
-rw-r--r--simulator/opendc-format/src/main/kotlin/org/opendc/format/trace/gwf/GwfTraceReader.kt6
-rw-r--r--simulator/opendc-format/src/main/kotlin/org/opendc/format/trace/sc20/Sc20TraceReader.kt11
-rw-r--r--simulator/opendc-format/src/main/kotlin/org/opendc/format/trace/swf/SwfTraceReader.kt11
-rw-r--r--simulator/opendc-format/src/main/kotlin/org/opendc/format/trace/wtf/WtfTraceReader.kt11
-rw-r--r--simulator/opendc-format/src/test/kotlin/org/opendc/format/trace/swf/SwfTraceReaderTest.kt7
6 files changed, 33 insertions, 24 deletions
diff --git a/simulator/opendc-format/src/main/kotlin/org/opendc/format/trace/bitbrains/BitbrainsTraceReader.kt b/simulator/opendc-format/src/main/kotlin/org/opendc/format/trace/bitbrains/BitbrainsTraceReader.kt
index 90d751ea..70d675fb 100644
--- a/simulator/opendc-format/src/main/kotlin/org/opendc/format/trace/bitbrains/BitbrainsTraceReader.kt
+++ b/simulator/opendc-format/src/main/kotlin/org/opendc/format/trace/bitbrains/BitbrainsTraceReader.kt
@@ -22,8 +22,8 @@
package org.opendc.format.trace.bitbrains
+import org.opendc.compute.core.image.Image
import org.opendc.compute.core.workload.VmWorkload
-import org.opendc.compute.simulator.SimWorkloadImage
import org.opendc.core.User
import org.opendc.format.trace.TraceEntry
import org.opendc.format.trace.TraceReader
@@ -131,19 +131,20 @@ public class BitbrainsTraceReader(
.toSortedSet()
)
+ val workload = SimTraceWorkload(flopsHistory.asSequence())
val vmWorkload = VmWorkload(
uuid,
"VM Workload $vmId",
UnnamedUser,
- SimWorkloadImage(
+ Image(
uuid,
vmId.toString(),
mapOf(
IMAGE_PERF_INTERFERENCE_MODEL to relevantPerformanceInterferenceModelItems,
"cores" to cores,
- "required-memory" to requiredMemory
- ),
- SimTraceWorkload(flopsHistory.asSequence())
+ "required-memory" to requiredMemory,
+ "workload" to workload
+ )
)
)
entries[vmId] = TraceEntryImpl(
diff --git a/simulator/opendc-format/src/main/kotlin/org/opendc/format/trace/gwf/GwfTraceReader.kt b/simulator/opendc-format/src/main/kotlin/org/opendc/format/trace/gwf/GwfTraceReader.kt
index c76889c8..6e0ff4b8 100644
--- a/simulator/opendc-format/src/main/kotlin/org/opendc/format/trace/gwf/GwfTraceReader.kt
+++ b/simulator/opendc-format/src/main/kotlin/org/opendc/format/trace/gwf/GwfTraceReader.kt
@@ -22,7 +22,7 @@
package org.opendc.format.trace.gwf
-import org.opendc.compute.simulator.SimWorkloadImage
+import org.opendc.compute.core.image.Image
import org.opendc.core.User
import org.opendc.format.trace.TraceEntry
import org.opendc.format.trace.TraceReader
@@ -41,7 +41,6 @@ import kotlin.collections.List
import kotlin.collections.MutableSet
import kotlin.collections.component1
import kotlin.collections.component2
-import kotlin.collections.emptyMap
import kotlin.collections.filter
import kotlin.collections.forEach
import kotlin.collections.getOrPut
@@ -136,10 +135,11 @@ public class GwfTraceReader(reader: BufferedReader) : TraceReader<Job> {
TraceEntryImpl(submitTime, Job(UUID(0L, taskId), "<unnamed>", UnnamedUser, HashSet()))
}
val workflow = entry.workload
+ val workload = SimFlopsWorkload(flops)
val task = Task(
UUID(0L, taskId),
"<unnamed>",
- SimWorkloadImage(UUID.randomUUID(), "<unnamed>", emptyMap(), SimFlopsWorkload(flops)),
+ Image(UUID.randomUUID(), "<unnamed>", mapOf("workload" to workload)),
HashSet(),
mapOf(
WORKFLOW_TASK_CORES to cores,
diff --git a/simulator/opendc-format/src/main/kotlin/org/opendc/format/trace/sc20/Sc20TraceReader.kt b/simulator/opendc-format/src/main/kotlin/org/opendc/format/trace/sc20/Sc20TraceReader.kt
index 78f581ca..8d401dcd 100644
--- a/simulator/opendc-format/src/main/kotlin/org/opendc/format/trace/sc20/Sc20TraceReader.kt
+++ b/simulator/opendc-format/src/main/kotlin/org/opendc/format/trace/sc20/Sc20TraceReader.kt
@@ -22,8 +22,8 @@
package org.opendc.format.trace.sc20
+import org.opendc.compute.core.image.Image
import org.opendc.compute.core.workload.VmWorkload
-import org.opendc.compute.simulator.SimWorkloadImage
import org.opendc.core.User
import org.opendc.format.trace.TraceEntry
import org.opendc.format.trace.TraceReader
@@ -156,19 +156,20 @@ public class Sc20TraceReader(
performanceInterferenceModel.items.filter { it.workloadNames.contains(vmId) }.toSortedSet(),
Random(random.nextInt())
)
+ val workload = SimTraceWorkload(flopsFragments.asSequence())
val vmWorkload = VmWorkload(
uuid,
"VM Workload $vmId",
UnnamedUser,
- SimWorkloadImage(
+ Image(
uuid,
vmId,
mapOf(
IMAGE_PERF_INTERFERENCE_MODEL to relevantPerformanceInterferenceModelItems,
"cores" to cores,
- "required-memory" to requiredMemory
- ),
- SimTraceWorkload(flopsFragments.asSequence())
+ "required-memory" to requiredMemory,
+ "workload" to workload
+ )
)
)
entries[uuid] = TraceEntryImpl(
diff --git a/simulator/opendc-format/src/main/kotlin/org/opendc/format/trace/swf/SwfTraceReader.kt b/simulator/opendc-format/src/main/kotlin/org/opendc/format/trace/swf/SwfTraceReader.kt
index 80c54354..711b7e91 100644
--- a/simulator/opendc-format/src/main/kotlin/org/opendc/format/trace/swf/SwfTraceReader.kt
+++ b/simulator/opendc-format/src/main/kotlin/org/opendc/format/trace/swf/SwfTraceReader.kt
@@ -22,8 +22,8 @@
package org.opendc.format.trace.swf
+import org.opendc.compute.core.image.Image
import org.opendc.compute.core.workload.VmWorkload
-import org.opendc.compute.simulator.SimWorkloadImage
import org.opendc.core.User
import org.opendc.format.trace.TraceEntry
import org.opendc.format.trace.TraceReader
@@ -154,18 +154,19 @@ public class SwfTraceReader(
}
val uuid = UUID(0L, jobNumber)
+ val workload = SimTraceWorkload(flopsHistory.asSequence())
val vmWorkload = VmWorkload(
uuid,
"SWF Workload $jobNumber",
UnnamedUser,
- SimWorkloadImage(
+ Image(
uuid,
jobNumber.toString(),
mapOf(
"cores" to cores,
- "required-memory" to memory
- ),
- SimTraceWorkload(flopsHistory.asSequence())
+ "required-memory" to memory,
+ "workload" to workload
+ )
)
)
diff --git a/simulator/opendc-format/src/main/kotlin/org/opendc/format/trace/wtf/WtfTraceReader.kt b/simulator/opendc-format/src/main/kotlin/org/opendc/format/trace/wtf/WtfTraceReader.kt
index d7dc09fa..7b4ee042 100644
--- a/simulator/opendc-format/src/main/kotlin/org/opendc/format/trace/wtf/WtfTraceReader.kt
+++ b/simulator/opendc-format/src/main/kotlin/org/opendc/format/trace/wtf/WtfTraceReader.kt
@@ -25,7 +25,7 @@ package org.opendc.format.trace.wtf
import org.apache.avro.generic.GenericRecord
import org.apache.hadoop.fs.Path
import org.apache.parquet.avro.AvroParquetReader
-import org.opendc.compute.simulator.SimWorkloadImage
+import org.opendc.compute.core.image.Image
import org.opendc.core.User
import org.opendc.format.trace.TraceEntry
import org.opendc.format.trace.TraceReader
@@ -78,10 +78,17 @@ public class WtfTraceReader(path: String) : TraceReader<Job> {
TraceEntryImpl(submitTime, Job(UUID(0L, taskId), "<unnamed>", UnnamedUser, HashSet()))
}
val workflow = entry.workload
+ val workload = SimFlopsWorkload(flops)
val task = Task(
UUID(0L, taskId),
"<unnamed>",
- SimWorkloadImage(UUID.randomUUID(), "<unnamed>", emptyMap(), SimFlopsWorkload(flops)),
+ Image(
+ UUID.randomUUID(),
+ "<unnamed>",
+ mapOf(
+ "workload" to workload
+ )
+ ),
HashSet(),
mapOf(
WORKFLOW_TASK_CORES to cores,
diff --git a/simulator/opendc-format/src/test/kotlin/org/opendc/format/trace/swf/SwfTraceReaderTest.kt b/simulator/opendc-format/src/test/kotlin/org/opendc/format/trace/swf/SwfTraceReaderTest.kt
index 45c125c4..7e3d2623 100644
--- a/simulator/opendc-format/src/test/kotlin/org/opendc/format/trace/swf/SwfTraceReaderTest.kt
+++ b/simulator/opendc-format/src/test/kotlin/org/opendc/format/trace/swf/SwfTraceReaderTest.kt
@@ -24,7 +24,6 @@ package org.opendc.format.trace.swf
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Test
-import org.opendc.compute.simulator.SimWorkloadImage
import org.opendc.simulator.compute.workload.SimTraceWorkload
import java.io.File
@@ -35,12 +34,12 @@ class SwfTraceReaderTest {
var entry = reader.next()
assertEquals(0, entry.submissionTime)
// 1961 slices for waiting, 3 full and 1 partial running slices
- assertEquals(1965, ((entry.workload.image as SimWorkloadImage).workload as SimTraceWorkload).trace.toList().size)
+ assertEquals(1965, (entry.workload.image.tags["workload"] as SimTraceWorkload).trace.toList().size)
entry = reader.next()
assertEquals(164472, entry.submissionTime)
// 1188 slices for waiting, 0 full and 1 partial running slices
- assertEquals(1189, ((entry.workload.image as SimWorkloadImage).workload as SimTraceWorkload).trace.toList().size)
- assertEquals(0.25, ((entry.workload.image as SimWorkloadImage).workload as SimTraceWorkload).trace.toList().last().usage)
+ assertEquals(1189, (entry.workload.image.tags["workload"] as SimTraceWorkload).trace.toList().size)
+ assertEquals(0.25, (entry.workload.image.tags["workload"] as SimTraceWorkload).trace.toList().last().usage)
}
}