diff options
Diffstat (limited to 'opendc-compute/opendc-compute-simulator')
5 files changed, 20 insertions, 12 deletions
diff --git a/opendc-compute/opendc-compute-simulator/src/main/java/org/opendc/compute/simulator/service/ComputeService.java b/opendc-compute/opendc-compute-simulator/src/main/java/org/opendc/compute/simulator/service/ComputeService.java index 1fb9c6a2..eb8d3377 100644 --- a/opendc-compute/opendc-compute-simulator/src/main/java/org/opendc/compute/simulator/service/ComputeService.java +++ b/opendc-compute/opendc-compute-simulator/src/main/java/org/opendc/compute/simulator/service/ComputeService.java @@ -34,7 +34,6 @@ import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; -import java.util.Objects; import java.util.Set; import java.util.SplittableRandom; import java.util.UUID; @@ -594,15 +593,16 @@ public final class ComputeService implements AutoCloseable { } @NotNull - public Flavor newFlavor(@NotNull String name, int cpuCount, long memorySize, @NotNull Map<String, ?> meta) { + public ServiceFlavor newFlavor( + @NotNull String name, int cpuCount, long memorySize, @NotNull Map<String, ?> meta) { checkOpen(); final ComputeService service = this.service; UUID uid = new UUID(service.clock.millis(), service.random.nextLong()); ServiceFlavor flavor = new ServiceFlavor(service, uid, name, cpuCount, memorySize, meta); - service.flavorById.put(uid, flavor); - service.flavors.add(flavor); + // service.flavorById.put(uid, flavor); + // service.flavors.add(flavor); return flavor; } @@ -642,7 +642,7 @@ public final class ComputeService implements AutoCloseable { @NotNull public ServiceTask newTask( @NotNull String name, - @NotNull Flavor flavor, + @NotNull ServiceFlavor flavor, @NotNull Workload workload, @NotNull Map<String, ?> meta) { checkOpen(); @@ -650,10 +650,11 @@ public final class ComputeService implements AutoCloseable { final ComputeService service = this.service; UUID uid = new UUID(service.clock.millis(), service.random.nextLong()); - final ServiceFlavor internalFlavor = - Objects.requireNonNull(service.flavorById.get(flavor.getUid()), "Unknown flavor"); + // final ServiceFlavor internalFlavor = + // Objects.requireNonNull(service.flavorById.get(flavor.getUid()), "Unknown flavor"); - ServiceTask task = new ServiceTask(service, uid, name, internalFlavor, workload, meta); + // ServiceTask task = new ServiceTask(service, uid, name, internalFlavor, workload, meta); + ServiceTask task = new ServiceTask(service, uid, name, flavor, workload, meta); service.taskById.put(uid, task); diff --git a/opendc-compute/opendc-compute-simulator/src/main/java/org/opendc/compute/simulator/service/ServiceTask.java b/opendc-compute/opendc-compute-simulator/src/main/java/org/opendc/compute/simulator/service/ServiceTask.java index 06d6535d..dac65d67 100644 --- a/opendc-compute/opendc-compute-simulator/src/main/java/org/opendc/compute/simulator/service/ServiceTask.java +++ b/opendc-compute/opendc-compute-simulator/src/main/java/org/opendc/compute/simulator/service/ServiceTask.java @@ -49,7 +49,7 @@ public class ServiceTask { private final UUID uid; private final String name; - private final ServiceFlavor flavor; + private ServiceFlavor flavor; public Workload workload; private Map<String, ?> meta; // TODO: remove this @@ -181,6 +181,9 @@ public class ServiceTask { } service.delete(this); + this.workload = null; + this.flavor = null; + this.setState(TaskState.DELETED); } diff --git a/opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/provisioner/ComputeMonitorProvisioningStep.kt b/opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/provisioner/ComputeMonitorProvisioningStep.kt index cec664b6..e1ce0dbd 100644 --- a/opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/provisioner/ComputeMonitorProvisioningStep.kt +++ b/opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/provisioner/ComputeMonitorProvisioningStep.kt @@ -45,6 +45,7 @@ public class ComputeMonitorProvisioningStep( OutputFiles.POWER_SOURCE to true, OutputFiles.BATTERY to true, ), + private val printFrequency: Int? = null, ) : ProvisioningStep { override fun apply(ctx: ProvisioningContext): AutoCloseable { val service = @@ -59,6 +60,7 @@ public class ComputeMonitorProvisioningStep( exportInterval, startTime, filesToExport, + printFrequency, ) return metricReader } diff --git a/opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/provisioner/ComputeSteps.kt b/opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/provisioner/ComputeSteps.kt index c72e8944..a18856f8 100644 --- a/opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/provisioner/ComputeSteps.kt +++ b/opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/provisioner/ComputeSteps.kt @@ -68,8 +68,9 @@ public fun registerComputeMonitor( OutputFiles.POWER_SOURCE to true, OutputFiles.BATTERY to true, ), + printFrequency: Int? = null, ): ProvisioningStep { - return ComputeMonitorProvisioningStep(serviceDomain, monitor, exportInterval, startTime, filesToExport) + return ComputeMonitorProvisioningStep(serviceDomain, monitor, exportInterval, startTime, filesToExport, printFrequency) } /** diff --git a/opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/telemetry/ComputeMetricReader.kt b/opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/telemetry/ComputeMetricReader.kt index c88b98ea..83899678 100644 --- a/opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/telemetry/ComputeMetricReader.kt +++ b/opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/telemetry/ComputeMetricReader.kt @@ -64,6 +64,7 @@ public class ComputeMetricReader( OutputFiles.BATTERY to true, OutputFiles.SERVICE to true, ), + private val printFrequency: Int? = null, ) : AutoCloseable { private val logger = KotlinLogging.logger {} private val scope = CoroutineScope(dispatcher.asCoroutineDispatcher()) @@ -156,6 +157,7 @@ public class ComputeMetricReader( } for (task in this.service.tasksToRemove) { + this.taskTableReaders.remove(task) task.delete() } this.service.clearTasksToRemove() @@ -197,7 +199,7 @@ public class ComputeMetricReader( monitor.record(this.serviceTableReader.copy()) } - if (loggCounter >= 24) { + if (printFrequency != null && loggCounter % printFrequency == 0) { var loggString = "\n\t\t\t\t\tMetrics after ${now.toEpochMilli() / 1000 / 60 / 60} hours:\n" loggString += "\t\t\t\t\t\tTasks Total: ${this.serviceTableReader.tasksTotal}\n" loggString += "\t\t\t\t\t\tTasks Active: ${this.serviceTableReader.tasksActive}\n" @@ -206,7 +208,6 @@ public class ComputeMetricReader( loggString += "\t\t\t\t\t\tTasks Terminated: ${this.serviceTableReader.tasksTerminated}\n" this.logger.warn { loggString } - loggCounter = 0 } } catch (cause: Throwable) { this.logger.warn(cause) { "Exporter threw an Exception" } |
