summaryrefslogtreecommitdiff
path: root/opendc-compute/opendc-compute-workload/src
diff options
context:
space:
mode:
Diffstat (limited to 'opendc-compute/opendc-compute-workload/src')
-rw-r--r--opendc-compute/opendc-compute-workload/src/main/kotlin/org/opendc/compute/workload/WorkloadLoader.kt34
1 files changed, 21 insertions, 13 deletions
diff --git a/opendc-compute/opendc-compute-workload/src/main/kotlin/org/opendc/compute/workload/WorkloadLoader.kt b/opendc-compute/opendc-compute-workload/src/main/kotlin/org/opendc/compute/workload/WorkloadLoader.kt
index 0b551a3c..ecb98ba2 100644
--- a/opendc-compute/opendc-compute-workload/src/main/kotlin/org/opendc/compute/workload/WorkloadLoader.kt
+++ b/opendc-compute/opendc-compute-workload/src/main/kotlin/org/opendc/compute/workload/WorkloadLoader.kt
@@ -54,9 +54,9 @@ public abstract class WorkloadLoader(private val submissionTime: String? = null)
reScheduleTasks(workload)
- if (fraction >= 1.0) {
- return workload
- }
+// if (fraction >= 1.0) {
+// return workload
+// }
if (fraction <= 0.0) {
throw Error("The fraction of tasks to load cannot be 0.0 or lower")
@@ -65,21 +65,29 @@ public abstract class WorkloadLoader(private val submissionTime: String? = null)
val res = mutableListOf<Task>()
val totalLoad = workload.sumOf { it.totalLoad }
+ val desiredLoad = totalLoad * fraction
var currentLoad = 0.0
- val shuffledWorkload = workload.shuffled()
- for (entry in shuffledWorkload) {
- val entryLoad = entry.totalLoad
-
- // TODO: ask Sacheen
- if ((currentLoad + entryLoad) / totalLoad > fraction) {
- break
- }
-
- currentLoad += entryLoad
+ while (currentLoad < desiredLoad) {
+ val entry = workload.random()
res += entry
+
+ currentLoad += entry.totalLoad
}
+// val shuffledWorkload = workload.shuffled()
+// for (entry in shuffledWorkload) {
+// val entryLoad = entry.totalLoad
+//
+// // TODO: ask Sacheen
+// if ((currentLoad + entryLoad) / totalLoad > fraction) {
+// break
+// }
+//
+// currentLoad += entryLoad
+// res += entry
+// }
+
logger.info { "Sampled ${workload.size} VMs (fraction $fraction) into subset of ${res.size} VMs" }
return res