From b97f4dee7b3e6433b944d4ce2252a1ed90941a9c Mon Sep 17 00:00:00 2001 From: erbel <johannes.erbel@cs.uni-goettingen.de> Date: Wed, 31 Mar 2021 16:08:47 +0200 Subject: [PATCH] Improve sensor sim managemnt --- .../rwm/mocci/connector/SensorConnector.java | 8 +++++ .../java/de/ugoe/cs/rwm/mocci/DownScaler.java | 2 +- src/main/java/de/ugoe/cs/rwm/mocci/MAPE.java | 34 ++++++++++++++++--- .../de/ugoe/cs/rwm/mocci/UpScalerSpark.java | 32 +++++++++++++---- 4 files changed, 65 insertions(+), 11 deletions(-) diff --git a/de.ugoe.cs.rwm.mocci.connector/src-gen/de/ugoe/cs/rwm/mocci/connector/SensorConnector.java b/de.ugoe.cs.rwm.mocci.connector/src-gen/de/ugoe/cs/rwm/mocci/connector/SensorConnector.java index 8fc99ba..220f7af 100644 --- a/de.ugoe.cs.rwm.mocci.connector/src-gen/de/ugoe/cs/rwm/mocci/connector/SensorConnector.java +++ b/de.ugoe.cs.rwm.mocci.connector/src-gen/de/ugoe/cs/rwm/mocci/connector/SensorConnector.java @@ -85,6 +85,14 @@ public class SensorConnector extends monitoring.impl.SensorImpl { @Override public void occiUpdate() { LOGGER.debug("occiUpdate() called on " + this); + if (simulation != null) { + simulation.stop(); + System.out.println("Restarting Sensor Simulation after attribute update!"); + SensorSimulation sim = new SensorSimulation(this); + simulation = new Thread(sim); + simulation.start(); + + } // TODO: Implement this callback or remove this method. } // End of user code diff --git a/src/main/java/de/ugoe/cs/rwm/mocci/DownScaler.java b/src/main/java/de/ugoe/cs/rwm/mocci/DownScaler.java index b06c2a3..aea7d1e 100644 --- a/src/main/java/de/ugoe/cs/rwm/mocci/DownScaler.java +++ b/src/main/java/de/ugoe/cs/rwm/mocci/DownScaler.java @@ -95,7 +95,7 @@ public class DownScaler extends AbsScaler { int count = 0; for (org.eclipse.cmf.occi.core.Resource res : config.getResources()) { if (res instanceof Compute) { - if (res.getTitle().contains("worker")) { + if (res.getTitle().toLowerCase().contains("worker")) { count++; } } diff --git a/src/main/java/de/ugoe/cs/rwm/mocci/MAPE.java b/src/main/java/de/ugoe/cs/rwm/mocci/MAPE.java index 1cfc449..91d086d 100644 --- a/src/main/java/de/ugoe/cs/rwm/mocci/MAPE.java +++ b/src/main/java/de/ugoe/cs/rwm/mocci/MAPE.java @@ -13,6 +13,7 @@ package de.ugoe.cs.rwm.mocci; import java.nio.file.Path; import java.nio.file.Paths; +import java.util.Scanner; import org.eclipse.emf.ecore.resource.Resource; import org.json.JSONArray; @@ -41,6 +42,7 @@ public class MAPE { static Resource runtimeModel; static Component newComp; static int interval = 5000; + static boolean manualMode = false; /** * Making javadoc happy. @@ -51,11 +53,36 @@ public class MAPE { System.out.println("Starting MAPE loop"); RegistryAndLoggerSetup.setup(); + for (String arg : args) { + if (arg.matches("\\d+")) { + System.out.println("Cycle argument set to: " + arg); + interval = Integer.parseInt(arg); + } + if (arg.matches("manual")) { + System.out.println("Manual mode enabled!"); + manualMode = true; + } + } + + if (args.length == 0) { + System.out.println("No argument given. Using default cycle of: " + interval); + } + while (true) { try { - System.out.println("\n--------------------Waiting for new MAPE-K Cycle: Sleeping " + interval - + "--------------------"); - Thread.sleep(interval); + if (manualMode) { + System.out.println("Press Enter to trigger next cycle or write exit to stop the loop."); + Scanner scanner = new Scanner(System.in); + String line = scanner.nextLine(); + if (line.equals("exit")) { + return; + } + System.out.println("Next Cycle triggered"); + } else { + System.out.println("\n--------------------Waiting for new MAPE-K Cycle: Sleeping " + interval + + "--------------------"); + Thread.sleep(interval); + } Monitor monitor = monitor(); String analysis = analyze(monitor); @@ -64,7 +91,6 @@ public class MAPE { } catch (InterruptedException e) { e.printStackTrace(); } - } } diff --git a/src/main/java/de/ugoe/cs/rwm/mocci/UpScalerSpark.java b/src/main/java/de/ugoe/cs/rwm/mocci/UpScalerSpark.java index 00642fe..5cf2c45 100644 --- a/src/main/java/de/ugoe/cs/rwm/mocci/UpScalerSpark.java +++ b/src/main/java/de/ugoe/cs/rwm/mocci/UpScalerSpark.java @@ -74,11 +74,11 @@ public class UpScalerSpark extends AbsScaler { comp.getAttributes().add(state); config.getResources().add(comp); - comp.setTitle("Hadoop-Worker-additional"); + comp.setTitle("Hadoop-worker-additional"); AttributeState hostname = factory.createAttributeState(); hostname.setName("occi.compute.hostname"); - hostname.setValue("Hadoop-Worker-additional"); + hostname.setValue("Hadoop-worker-additional"); comp.getAttributes().add(hostname); Computesim sim = WorkloadFactory.eINSTANCE.createComputesim(); @@ -132,8 +132,21 @@ public class UpScalerSpark extends AbsScaler { private Sensor addSensor(Configuration config, Compute comp) { System.out.println(" Adding Sensor to Model"); Sensor sens = mFactory.createSensor(); - sens.setTitle("CPUSensor"); - config.getResources().add(sens); + sens.setTitle("sensor"); + AttributeState attrName = factory.createAttributeState(); + attrName.setName("occi.app.name"); + attrName.setValue("sensor"); + sens.getAttributes().add(attrName); + + AttributeState attrContext = factory.createAttributeState(); + attrContext.setName("occi.app.context"); + attrContext.setValue("http://www.de"); + sens.getAttributes().add(attrContext); + + AttributeState attrUrl = factory.createAttributeState(); + attrUrl.setName("occi.app.url"); + attrUrl.setValue("http://www.de"); + sens.getAttributes().add(attrUrl); AttributeState attr = factory.createAttributeState(); attr.setName("occi.core.id"); @@ -151,10 +164,17 @@ public class UpScalerSpark extends AbsScaler { mp.setTarget(comp); Sensorsim sim = WorkloadFactory.eINSTANCE.createSensorsim(); + String simString = "None, None, High, Critical"; sim.setSimChangeRate(3000); - sim.setSimMonitoringResults("None, None, High, Critical"); + sim.setSimMonitoringResults(simString); + AttributeState attrRes = factory.createAttributeState(); + attrRes.setName("sim.monitoring.results"); + attrRes.setValue(simString); + sim.getAttributes().add(attrRes); sens.getParts().add(sim); + config.getResources().add(sens); + return sens; } @@ -214,7 +234,7 @@ public class UpScalerSpark extends AbsScaler { private Resultprovider addResultProvider(Configuration config, Compute comp, Sensor sens) { System.out.println(" Adding Resultprovider to Model"); Resultprovider rp = mFactory.createResultprovider(); - rp.setTitle("CPUProvider"); + // rp.setTitle("CPUProvider"); config.getResources().add(rp); Occiresultprovider orp = mFactory.createOcciresultprovider(); -- GitLab