Research Breakthrough Possible @S-Logix pro@slogix.in

Office Address

Social List

How Can I Create Applications in EdgeCloudSim?

Applications in Edgecloudsim

Condition for Create Applications in EdgeCloudSim

  • Description:
    Creating applications in EdgeCloudSim involves defining the structure of tasks, their resource requirements, execution times, and dependencies using the Application class and AppModule instances. Tasks are assigned resources like CPU, memory, and bandwidth, along with execution constraints. Interdependencies between tasks are also defined, specifying execution order. After defining the application, it is instantiated and assigned to edge devices or cloud resources in the simulation, where tasks can be scheduled and executed dynamically based on resource availability and system state.
Sample Code
  • EdgeCloud.java:
    package EdgeCloud;
    import java.text.DateFormat;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    import org.cloudbus.cloudsim.Log;
    import org.cloudbus.cloudsim.core.CloudSim;
    import edu.boun.edgecloudsim.core.ScenarioFactory;
    import edu.boun.edgecloudsim.core.SimManager;
    import edu.boun.edgecloudsim.core.SimSettings;
    import edu.boun.edgecloudsim.utils.SimLogger;
    import edu.boun.edgecloudsim.utils.SimUtils;
    public class EdgeCloud {
    /**
    * Creates main() to run this example
    */
    public void runSimulation(String[] args) {
    //disable console output of cloudsim library
    Log.disable();
    //enable console output and file output of this application
    SimLogger.enablePrintLog();
    int iterationNumber = 4;
    String configFile = "";
    String outputFolder = "";
    String edgeDevicesFile = "";
    String applicationsFile = "";
    if (args.length == 5) {
    configFile = args[0];
    edgeDevicesFile = args[1];
    applicationsFile = args[2];
    outputFolder = args[3];
    iterationNumber = Integer.parseInt(args[4]);
    } else {
    SimLogger.printLine("Simulation setting file, output folder and iteration number are not provided! Using default ones...");
    configFile = "src/scripts/Edge_Application/config/default_config.properties";
    applicationsFile = "src/scripts/Edge_Application/config/applications.xml";
    edgeDevicesFile = "src/scripts/Edge_Application/config/edge_devices.xml";
    outputFolder = "src/sim_results/ite" + iterationNumber;
    }
    //load settings from configuration file
    SimSettings SS = SimSettings.getInstance();
    if (SS.initialize(configFile, edgeDevicesFile, applicationsFile) == false) {
    SimLogger.printLine("cannot initialize simulation settings!");
    System.exit(1);
    }
    //String configName = "default";
    if (SS.getFileLoggingEnabled()) {
    SimUtils.cleanOutputFolder(outputFolder);
    SimLogger.enableFileLog();
    }
    DateFormat df = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
    Date SimulationStartDate = Calendar.getInstance().getTime();
    String now = df.format(SimulationStartDate);
    SimLogger.printLine("Simulation started at " + now);
    SimLogger.printLine("----------------------------------------------------------------------");
    //String wekaModelsFolder = configFile.substring(0, configFile.lastIndexOf('/')) + "/weka/";
    //WekaWrapper.getInstance().initialize("MultilayerPerceptron", "LinearRegression", wekaModelsFolder);
    for (int i = SS.getMinNumOfMobileDev(); i <= SS.getNumOfEdgeDevices(); i += 1) {
    for (int s = 0; s < SS.getSimulationScenarios().length; s++) {
    for (int p = 0; p < SS.getOrchestratorPolicies().length; p++) {
    mainHelper(outputFolder, SS.getSimulationScenarios()[s], SS.getOrchestratorPolicies()[p], iterationNumber, i);
    }
    }
    }
    Date SimulationEndDate = Calendar.getInstance().getTime();
    now = df.format(SimulationEndDate);
    SimLogger.printLine("Simulation finished at " + now + ". It took " + SimUtils.getTimeDifference(SimulationStartDate, SimulationEndDate));
    }
    public static void mainHelper(String outputFolder, String simulationScenario, String orchestratorPolicy, int iterationNumber, int numOfMobileDevice) {
    DateFormat df = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
    Date ScenarioStartDate = Calendar.getInstance().getTime();
    String now = df.format(ScenarioStartDate);
    SimSettings SS = SimSettings.getInstance();
    SimLogger.printLine("Scenario started at " + now);
    SimLogger.printLine("Scenario: " + simulationScenario + " - Policy: " + orchestratorPolicy + " - #iteration: " + iterationNumber);
    SimLogger.printLine("Duration: " + SS.getSimulationTime() / 60 + " min (warm up period: " + SS.getWarmUpPeriod() / 60 + " min) - #devices: " + numOfMobileDevice);
    SimLogger.getInstance().simStarted(outputFolder, "SIMRESULT_" + simulationScenario + "_" + orchestratorPolicy + "_" + numOfMobileDevice + "DEVICES");
    try {
    // First step: Initialize the CloudSim package. It should be called
    // before creating any entities.
    int num_user = 2; // number of grid users
    Calendar calendar = Calendar.getInstance();
    boolean trace_flag = false; // mean trace events
    // Initialize the CloudSim library
    CloudSim.init(num_user, calendar, trace_flag, 0.01);
    // Generate EdgeCloudsim Scenario Factory
    ScenarioFactory sampleFactory = new SampleScenarioFactory(numOfMobileDevice, SS.getSimulationTime(), orchestratorPolicy, simulationScenario);
    // Generate EdgeCloudSim Simulation Manager
    SimManager manager = new SimManager(sampleFactory, numOfMobileDevice, simulationScenario, orchestratorPolicy);
    if (orchestratorPolicy.equals("EDGE_CLOUD")) {
    SimLogger.disableFileLog();
    ((SampleEdgeOrchestrator) manager.getEdgeOrchestrator()).openTrainerOutputFile();
    }
    // Start simulation
    manager.startSimulation();
    double wan = ((SampleNetworkModel) manager.getNetworkModel()).maxWanDelay;
    double wlan = ((SampleNetworkModel) manager.getNetworkModel()).maxWlanDelay;
    double bw = SS.getWanBandwidth() * wan * wlan / SS.getSimulationTime();
    System.out.println("Bandwidth: " + bw + " bps");
    Date ScenarioEndDate = Calendar.getInstance().getTime();
    String responseTime = SimUtils.getTimeDifference(ScenarioStartDate, ScenarioEndDate);
    SimLogger.printLine("Response Time: " + responseTime);
    // double bandwidth = SS.getWanBandwidth();
    // SimLogger.printLine("Bandwidth: " + bandwidth + "Mbps");
    String latency = SimUtils.getLatency(ScenarioStartDate, ScenarioEndDate);
    SimLogger.printLine("Latency: " + latency);
    //SimLogger.printLine("maxWanDelay: " + ((SampleNetworkModel)manager.getNetworkModel()).maxWanDelay);
    //SimLogger.printLine("maxGsmDelay: " + ((SampleNetworkModel)manager.getNetworkModel()).maxGsmDelay);
    //SimLogger.printLine("maxWlanDelay: " + ((SampleNetworkModel)manager.getNetworkModel()).maxWlanDelay);
    if (orchestratorPolicy.equals("EDGE_CLOUD")) {
    ((SampleEdgeOrchestrator) manager.getEdgeOrchestrator()).closeTrainerOutputFile();
    }
    } catch (Exception e) {
    SimLogger.printLine("The simulation has been terminated due to an unexpected error");
    System.exit(0);
    }
    Date ScenarioEndDate = Calendar.getInstance().getTime();
    now = df.format(ScenarioEndDate);
    SimLogger.printLine("Scenario finished at " + now + " It took " + SimUtils.getTimeDifference(ScenarioStartDate, ScenarioEndDate));
    SimLogger.printLine("------------------------------------------------------------------------");
    }//End of scenarios loop
    }

ScreenShots
  • Applications in Edgecloudsim1
  • Applications in Edgecloudsim2
  • Applications in Edgecloudsim3