diff options
| author | Fabian Mastenbroek <mail.fabianm@gmail.com> | 2022-10-10 11:15:40 +0200 |
|---|---|---|
| committer | Fabian Mastenbroek <mail.fabianm@gmail.com> | 2022-10-10 15:29:24 +0200 |
| commit | 3624e37c847f6b4d45ad1abd6437c6e7cdb28dcd (patch) | |
| tree | d89ec81af2c5ef8474fe95c1ac681d63435f7b2c | |
| parent | 6c896a4a29147a863d797ac5bd5a210d4a9a78ef (diff) | |
fix(web/runner): Fix service metric reporting
This change resolves an issue in the web runner where the finished VMs
would always be reported as zero.
| -rw-r--r-- | opendc-web/opendc-web-runner/src/main/kotlin/org/opendc/web/runner/internal/WebComputeMonitor.kt | 33 | ||||
| -rw-r--r-- | opendc-web/opendc-web-ui/src/util/available-metrics.js | 26 |
2 files changed, 25 insertions, 34 deletions
diff --git a/opendc-web/opendc-web-runner/src/main/kotlin/org/opendc/web/runner/internal/WebComputeMonitor.kt b/opendc-web/opendc-web-runner/src/main/kotlin/org/opendc/web/runner/internal/WebComputeMonitor.kt index 4db70d3d..d6722115 100644 --- a/opendc-web/opendc-web-runner/src/main/kotlin/org/opendc/web/runner/internal/WebComputeMonitor.kt +++ b/opendc-web/opendc-web-runner/src/main/kotlin/org/opendc/web/runner/internal/WebComputeMonitor.kt @@ -24,8 +24,9 @@ package org.opendc.web.runner.internal import org.opendc.experiments.compute.telemetry.ComputeMonitor import org.opendc.experiments.compute.telemetry.table.HostTableReader +import org.opendc.experiments.compute.telemetry.table.ServiceData import org.opendc.experiments.compute.telemetry.table.ServiceTableReader -import kotlin.math.max +import org.opendc.experiments.compute.telemetry.table.toServiceData import kotlin.math.roundToLong /** @@ -76,30 +77,20 @@ internal class WebComputeMonitor : ComputeMonitor { val count: Long ) - private var serviceMetrics: AggregateServiceMetrics = AggregateServiceMetrics() + private lateinit var serviceData: ServiceData override fun record(reader: ServiceTableReader) { - serviceMetrics = AggregateServiceMetrics( - max(reader.attemptsSuccess, serviceMetrics.vmTotalCount), - max(reader.serversPending, serviceMetrics.vmWaitingCount), - max(reader.serversActive, serviceMetrics.vmActiveCount), - max(0, serviceMetrics.vmInactiveCount), - max(reader.attemptsFailure, serviceMetrics.vmFailedCount) - ) + serviceData = reader.toServiceData() } - private data class AggregateServiceMetrics( - val vmTotalCount: Int = 0, - val vmWaitingCount: Int = 0, - val vmActiveCount: Int = 0, - val vmInactiveCount: Int = 0, - val vmFailedCount: Int = 0 - ) - /** * Collect the results of the simulation. */ fun collectResults(): Results { + val hostAggregateMetrics = hostAggregateMetrics + val hostMetrics = hostMetrics + val serviceData = serviceData + return Results( hostAggregateMetrics.totalActiveTime, hostAggregateMetrics.totalIdleTime, @@ -112,10 +103,10 @@ internal class WebComputeMonitor : ComputeMonitor { hostAggregateMetrics.totalPowerDraw, hostAggregateMetrics.totalFailureSlices.roundToLong(), hostAggregateMetrics.totalFailureVmSlices.roundToLong(), - serviceMetrics.vmTotalCount, - serviceMetrics.vmWaitingCount, - serviceMetrics.vmInactiveCount, - serviceMetrics.vmFailedCount + serviceData.serversTotal, + serviceData.serversPending, + serviceData.serversTotal - serviceData.serversPending - serviceData.serversActive, + serviceData.attemptsError + serviceData.attemptsFailure ) } diff --git a/opendc-web/opendc-web-ui/src/util/available-metrics.js b/opendc-web/opendc-web-ui/src/util/available-metrics.js index b21ab150..e6bb902f 100644 --- a/opendc-web/opendc-web-ui/src/util/available-metrics.js +++ b/opendc-web/opendc-web-ui/src/util/available-metrics.js @@ -42,10 +42,10 @@ export const METRIC_NAMES_SHORT = { mean_num_deployed_images: 'Mean Num. Deployed Images Per Host', max_num_deployed_images: 'Max. Num. Deployed Images Per Host', total_failure_vm_slices: 'Total Num. Failed VM Slices', - total_vms_submitted: 'Total Num. VMs Submitted', - total_vms_queued: 'Max. Num. VMs Queued', - total_vms_finished: 'Max. Num. VMs Finished', - total_vms_failed: 'Max. Num. VMs Failed', + total_vms_submitted: 'VMs Submitted', + total_vms_queued: 'VMs Queued', + total_vms_finished: 'VMs Finished', + total_vms_failed: 'VMs Failed', } export const METRIC_NAMES = { @@ -58,11 +58,11 @@ export const METRIC_NAMES = { mean_cpu_demand: 'Mean Host CPU Demand', mean_num_deployed_images: 'Mean Number of Deployed Images Per Host', max_num_deployed_images: 'Maximum Number Deployed Images Per Host', - total_failure_vm_slices: 'Total Number Failed VM Slices', - total_vms_submitted: 'Total Number VMs Submitted', - total_vms_queued: 'Maximum Number VMs Queued', - total_vms_finished: 'Maximum Number VMs Finished', - total_vms_failed: 'Maximum Number VMs Failed', + total_failure_vm_slices: 'Failed VM Slices', + total_vms_submitted: 'VMs Submitted', + total_vms_queued: 'VMs Queued', + total_vms_finished: 'VMs Finished', + total_vms_failed: 'VMs Failed', } export const METRIC_UNITS = { @@ -94,9 +94,9 @@ export const METRIC_DESCRIPTIONS = { mean_num_deployed_images: 'The average number of virtual machines deployed on a host.', max_num_deployed_images: 'The maximum number of virtual machines deployed at any time.', total_failure_vm_slices: 'The total amount of CPU clock cycles lost due to failure.', - total_vms_submitted: 'The total number of virtual machines scheduled by the compute service.', + total_vms_submitted: 'The number of virtual machines scheduled by the compute service.', total_vms_queued: - 'The maximum number of virtual machines waiting to be scheduled by the compute service at any point.', - total_vms_finished: 'The total number of virtual machines that completed successfully.', - total_vms_failed: 'The total number of virtual machines that failed during execution.', + 'The number of virtual machines still waiting to be scheduled by the compute service.', + total_vms_finished: 'The number of virtual machines that completed.', + total_vms_failed: 'The number of virtual machines that could not be scheduled.', } |
