summaryrefslogtreecommitdiff
path: root/opendc-experiments/opendc-experiments-compute
diff options
context:
space:
mode:
Diffstat (limited to 'opendc-experiments/opendc-experiments-compute')
-rw-r--r--opendc-experiments/opendc-experiments-compute/src/main/kotlin/org/opendc/experiments/compute/ComputeSteps.kt2
-rw-r--r--opendc-experiments/opendc-experiments-compute/src/main/kotlin/org/opendc/experiments/compute/telemetry/ComputeMetricReader.kt39
-rw-r--r--opendc-experiments/opendc-experiments-compute/src/main/kotlin/org/opendc/experiments/compute/telemetry/table/ServiceTableReader.kt5
3 files changed, 36 insertions, 10 deletions
diff --git a/opendc-experiments/opendc-experiments-compute/src/main/kotlin/org/opendc/experiments/compute/ComputeSteps.kt b/opendc-experiments/opendc-experiments-compute/src/main/kotlin/org/opendc/experiments/compute/ComputeSteps.kt
index c79d9b37..690156e2 100644
--- a/opendc-experiments/opendc-experiments-compute/src/main/kotlin/org/opendc/experiments/compute/ComputeSteps.kt
+++ b/opendc-experiments/opendc-experiments-compute/src/main/kotlin/org/opendc/experiments/compute/ComputeSteps.kt
@@ -59,7 +59,7 @@ public fun setupComputeService(
public fun registerComputeMonitor(
serviceDomain: String,
monitor: ComputeMonitor,
- exportInterval: Duration = Duration.ofMinutes(1)
+ exportInterval: Duration = Duration.ofMinutes(5)
): ProvisioningStep {
return ComputeMonitorProvisioningStep(serviceDomain, monitor, exportInterval)
}
diff --git a/opendc-experiments/opendc-experiments-compute/src/main/kotlin/org/opendc/experiments/compute/telemetry/ComputeMetricReader.kt b/opendc-experiments/opendc-experiments-compute/src/main/kotlin/org/opendc/experiments/compute/telemetry/ComputeMetricReader.kt
index ff3bfb8e..e8cd3a55 100644
--- a/opendc-experiments/opendc-experiments-compute/src/main/kotlin/org/opendc/experiments/compute/telemetry/ComputeMetricReader.kt
+++ b/opendc-experiments/opendc-experiments-compute/src/main/kotlin/org/opendc/experiments/compute/telemetry/ComputeMetricReader.kt
@@ -87,7 +87,7 @@ public class ComputeMetricReader(
}
} finally {
- loggState()
+// loggState()
if (monitor is AutoCloseable) {
monitor.close()
@@ -109,12 +109,12 @@ public class ComputeMetricReader(
for (server in this.service.servers) {
val reader = this.serverTableReaders.computeIfAbsent(server) { ServerTableReaderImpl(service, it) }
reader.record(now)
- this.monitor.record(reader)
+ this.monitor.record(reader.copy())
reader.reset()
}
this.serviceTableReader.record(now)
- monitor.record(this.serviceTableReader)
+ monitor.record(this.serviceTableReader.copy())
} catch (cause: Throwable) {
this.logger.warn(cause) { "Exporter threw an Exception" }
}
@@ -128,6 +128,27 @@ public class ComputeMetricReader(
* An aggregator for service metrics before they are reported.
*/
private class ServiceTableReaderImpl(private val service: ComputeService) : ServiceTableReader {
+
+ override fun copy(): ServiceTableReader {
+ val newServiceTable = ServiceTableReaderImpl(service)
+ newServiceTable.setValues(this)
+
+ return newServiceTable
+ }
+
+ override fun setValues(table: ServiceTableReader) {
+ _timestamp = table.timestamp
+
+ _hostsUp = table.hostsUp
+ _hostsDown = table.hostsDown
+ _serversTotal = table.serversTotal
+ _serversPending = table.serversPending
+ _serversActive = table.serversActive
+ _attemptsSuccess = table.attemptsSuccess
+ _attemptsFailure = table.attemptsFailure
+ _attemptsError = table.attemptsError
+ }
+
private var _timestamp: Instant = Instant.MIN
override val timestamp: Instant
get() = _timestamp
@@ -363,18 +384,18 @@ public class ComputeMetricReader(
}
override fun setValues(table: ServerTableReader) {
+ host = table.host
+
_timestamp = table.timestamp
- _uptime = table.uptime
- _downtime = table.downtime
- _provisionTime = table.provisionTime
- _bootTime = table.bootTime
_cpuLimit = table.cpuLimit
_cpuActiveTime = table.cpuActiveTime
_cpuIdleTime = table.cpuIdleTime
_cpuStealTime = table.cpuStealTime
_cpuLostTime = table.cpuLostTime
-
- host = table.host
+ _uptime = table.uptime
+ _downtime = table.downtime
+ _provisionTime = table.provisionTime
+ _bootTime = table.bootTime
}
private val _server = server
diff --git a/opendc-experiments/opendc-experiments-compute/src/main/kotlin/org/opendc/experiments/compute/telemetry/table/ServiceTableReader.kt b/opendc-experiments/opendc-experiments-compute/src/main/kotlin/org/opendc/experiments/compute/telemetry/table/ServiceTableReader.kt
index bb926298..a077a476 100644
--- a/opendc-experiments/opendc-experiments-compute/src/main/kotlin/org/opendc/experiments/compute/telemetry/table/ServiceTableReader.kt
+++ b/opendc-experiments/opendc-experiments-compute/src/main/kotlin/org/opendc/experiments/compute/telemetry/table/ServiceTableReader.kt
@@ -28,6 +28,11 @@ import java.time.Instant
* An interface that is used to read a row of a service trace entry.
*/
public interface ServiceTableReader {
+
+ public fun copy(): ServiceTableReader
+
+ public fun setValues(table: ServiceTableReader)
+
/**
* The timestamp of the current entry of the reader.
*/