summaryrefslogtreecommitdiff
path: root/opendc-experiments/opendc-experiments-base/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'opendc-experiments/opendc-experiments-base/src/main')
-rw-r--r--opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/experiment/specs/WorkloadSpec.kt7
-rw-r--r--opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/runner/ScenarioReplayer.kt3
-rw-r--r--opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/runner/ScenarioRunner.kt12
3 files changed, 9 insertions, 13 deletions
diff --git a/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/experiment/specs/WorkloadSpec.kt b/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/experiment/specs/WorkloadSpec.kt
index a3414054..87c7abe9 100644
--- a/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/experiment/specs/WorkloadSpec.kt
+++ b/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/experiment/specs/WorkloadSpec.kt
@@ -32,15 +32,20 @@ import java.io.File
*
* @property pathToFile
* @property type
+ * @property sampleFraction
+ * @property submissionTime
*/
@Serializable
public data class WorkloadSpec(
val pathToFile: String,
val type: WorkloadTypes,
+ val sampleFraction: Double = 1.0,
+ val submissionTime: String? = null,
) {
public val name: String = File(pathToFile).nameWithoutExtension
init {
+ require(sampleFraction > 0) { "The fraction of the tasks can not be 0.0 or lower" }
require(File(pathToFile).exists()) { "The provided path to the workload: $pathToFile does not exist " }
}
}
@@ -65,6 +70,7 @@ public enum class WorkloadTypes {
public fun getWorkloadLoader(
type: WorkloadTypes,
pathToFile: File,
+ submissionTime: String?,
checkpointInterval: Long,
checkpointDuration: Long,
checkpointIntervalScaling: Double,
@@ -73,6 +79,7 @@ public fun getWorkloadLoader(
WorkloadTypes.ComputeWorkload ->
ComputeWorkloadLoader(
pathToFile,
+ submissionTime,
checkpointInterval,
checkpointDuration,
checkpointIntervalScaling,
diff --git a/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/runner/ScenarioReplayer.kt b/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/runner/ScenarioReplayer.kt
index a0263e38..45fedd0d 100644
--- a/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/runner/ScenarioReplayer.kt
+++ b/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/runner/ScenarioReplayer.kt
@@ -139,9 +139,6 @@ public suspend fun ComputeService.replay(
// Wait until the task is terminated
taskWatcher.wait()
-
- // Stop the task after reaching the end-time of the virtual machine
-// task.delete()
}
}
}
diff --git a/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/runner/ScenarioRunner.kt b/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/runner/ScenarioRunner.kt
index cda43eb7..c9c2729d 100644
--- a/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/runner/ScenarioRunner.kt
+++ b/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/runner/ScenarioRunner.kt
@@ -80,24 +80,16 @@ public fun runScenario(
val checkpointDuration = scenario.checkpointModelSpec?.checkpointDuration ?: 0L
val checkpointIntervalScaling = scenario.checkpointModelSpec?.checkpointIntervalScaling ?: 1.0
-// val workloadLoader =
-// ComputeWorkloadLoader(
-// File(scenario.workloadSpec.pathToFile),
-// checkpointInterval,
-// checkpointDuration,
-// checkpointIntervalScaling,
-// )
-// val tasks = getWorkloadType(scenario.workloadSpec.type).resolve(workloadLoader, Random(seed))
-
val workloadLoader =
getWorkloadLoader(
scenario.workloadSpec.type,
File(scenario.workloadSpec.pathToFile),
+ scenario.workloadSpec.submissionTime,
checkpointInterval,
checkpointDuration,
checkpointIntervalScaling,
)
- val workload = workloadLoader.load()
+ val workload = workloadLoader.sampleByLoad(scenario.workloadSpec.sampleFraction)
val startTimeLong = workload.minOf { it.submissionTime }.toEpochMilli()
val startTime = Duration.ofMillis(startTimeLong)