From 9a210ccfc09bfec0f42412d93b4a139095b1e567 Mon Sep 17 00:00:00 2001 From: Fabian Mastenbroek Date: Wed, 22 Jul 2020 20:58:17 +0200 Subject: Terminate heartbeat after scenario finish --- .../src/main/kotlin/com/atlarge/opendc/runner/web/Main.kt | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/simulator/opendc/opendc-runner-web/src/main/kotlin/com/atlarge/opendc/runner/web/Main.kt b/simulator/opendc/opendc-runner-web/src/main/kotlin/com/atlarge/opendc/runner/web/Main.kt index 0ff9b870..807c119e 100644 --- a/simulator/opendc/opendc-runner-web/src/main/kotlin/com/atlarge/opendc/runner/web/Main.kt +++ b/simulator/opendc/opendc-runner-web/src/main/kotlin/com/atlarge/opendc/runner/web/Main.kt @@ -276,6 +276,9 @@ class RunnerCli : CliktCommand(name = "runner") { } } + val POLL_INTERVAL = 5000L // ms = 5 s + val HEARTBEAT_INTERVAL = 60000L // ms = 1 min + override fun run() = runBlocking(Dispatchers.Default) { logger.info { "Starting OpenDC web runner" } logger.info { "Connecting to MongoDB instance" } @@ -293,7 +296,7 @@ class RunnerCli : CliktCommand(name = "runner") { val scenario = manager.findNext() if (scenario == null) { - delay(5000) + delay(POLL_INTERVAL) continue } @@ -308,9 +311,11 @@ class RunnerCli : CliktCommand(name = "runner") { coroutineScope { // Launch heartbeat process - launch { - delay(60000) - manager.heartbeat(id) + val heartbeat = launch { + while (true) { + delay(HEARTBEAT_INTERVAL) + manager.heartbeat(id) + } } try { @@ -326,6 +331,8 @@ class RunnerCli : CliktCommand(name = "runner") { } catch (e: Exception) { logger.warn(e) { "Scenario failed to finish" } manager.fail(id) + } finally { + heartbeat.cancel() } } } -- cgit v1.2.3 From 67ba5463d81b4b9677683ba0d6be53b626972e06 Mon Sep 17 00:00:00 2001 From: Fabian Mastenbroek Date: Thu, 23 Jul 2020 16:22:36 +0200 Subject: Add workload sampling strategy to Parquet output --- .../opendc/experiments/sc20/telemetry/parquet/ParquetRunEventWriter.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/telemetry/parquet/ParquetRunEventWriter.kt b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/telemetry/parquet/ParquetRunEventWriter.kt index c1724369..043e4670 100644 --- a/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/telemetry/parquet/ParquetRunEventWriter.kt +++ b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/telemetry/parquet/ParquetRunEventWriter.kt @@ -51,6 +51,7 @@ public class ParquetRunEventWriter(path: File, bufferSize: Int) : record.put("topology", scenario.topology.name) record.put("workload_name", scenario.workload.name) record.put("workload_fraction", scenario.workload.fraction) + record.put("workload_sampler", scenario.workload.samplingStrategy) record.put("allocation_policy", scenario.allocationPolicy) record.put("failure_frequency", scenario.operationalPhenomena.failureFrequency) record.put("interference", scenario.operationalPhenomena.hasInterference) @@ -69,6 +70,7 @@ public class ParquetRunEventWriter(path: File, bufferSize: Int) : .name("topology").type().stringType().noDefault() .name("workload_name").type().stringType().noDefault() .name("workload_fraction").type().doubleType().noDefault() + .name("workload_sampler").type().stringType().noDefault() .name("allocation_policy").type().stringType().noDefault() .name("failure_frequency").type().doubleType().noDefault() .name("interference").type().booleanType().noDefault() -- cgit v1.2.3 From 2892f05baeb79f77586eb36d3506a57b1d20b8aa Mon Sep 17 00:00:00 2001 From: Georgios Andreadis Date: Fri, 24 Jul 2020 10:15:18 +0200 Subject: Increase component limits and add overflow handling --- frontend/src/components/app/map/MapConstants.js | 2 +- .../app/sidebars/topology/machine/MachineSidebarComponent.js | 2 +- .../src/components/app/sidebars/topology/machine/UnitAddComponent.js | 2 +- .../src/components/app/sidebars/topology/machine/UnitTabsComponent.js | 2 +- .../components/modals/custom-components/NewTopologyModalComponent.js | 2 +- frontend/src/containers/app/sidebars/project/TopologyListContainer.js | 4 ++-- frontend/src/index.sass | 3 +++ 7 files changed, 10 insertions(+), 7 deletions(-) diff --git a/frontend/src/components/app/map/MapConstants.js b/frontend/src/components/app/map/MapConstants.js index 0a970701..d6ea1f84 100644 --- a/frontend/src/components/app/map/MapConstants.js +++ b/frontend/src/components/app/map/MapConstants.js @@ -23,6 +23,6 @@ export const MAP_SCALE_PER_EVENT = 1.1 export const MAP_MIN_SCALE = 0.5 export const MAP_MAX_SCALE = 1.5 -export const MAX_NUM_UNITS_PER_MACHINE = 4 +export const MAX_NUM_UNITS_PER_MACHINE = 6 export const DEFAULT_RACK_SLOT_CAPACITY = 42 export const DEFAULT_RACK_POWER_CAPACITY = 10000 diff --git a/frontend/src/components/app/sidebars/topology/machine/MachineSidebarComponent.js b/frontend/src/components/app/sidebars/topology/machine/MachineSidebarComponent.js index 02e7b8d4..7c78cf9e 100644 --- a/frontend/src/components/app/sidebars/topology/machine/MachineSidebarComponent.js +++ b/frontend/src/components/app/sidebars/topology/machine/MachineSidebarComponent.js @@ -6,7 +6,7 @@ import UnitTabsContainer from '../../../../../containers/app/sidebars/topology/m const MachineSidebarComponent = ({ machineId }) => { return ( -
+
diff --git a/frontend/src/components/app/sidebars/topology/machine/UnitAddComponent.js b/frontend/src/components/app/sidebars/topology/machine/UnitAddComponent.js index d5ecbce3..4e9dbc7e 100644 --- a/frontend/src/components/app/sidebars/topology/machine/UnitAddComponent.js +++ b/frontend/src/components/app/sidebars/topology/machine/UnitAddComponent.js @@ -11,7 +11,7 @@ class UnitAddComponent extends React.Component { return (
- (this.unitSelect = unitSelect)}> {this.props.units.map((unit) => (
- +