WorkflowSim/WorkflowSim-1.0

I want code for calculating makespan in eclipse(workflowsim). I am usind Montage_25 workflow as a dataset for the execution of scheduling algorithm(First Come First Serve)

Opened this issue · 1 comments

/**

  • Copyright 2012-2013 University Of Southern California
  • Licensed under the Apache License, Version 2.0 (the "License"); you may not
  • use this file except in compliance with the License. You may obtain a copy of
  • the License at
  • http://www.apache.org/licenses/LICENSE-2.0
  • Unless required by applicable law or agreed to in writing, software
  • distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  • WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
  • License for the specific language governing permissions and limitations under
  • the License.
    */
    package org.workflowsim.examples.scheduling;

import java.io.File;
import java.util.Calendar;
import java.util.List;

import org.cloudbus.cloudsim.Cloudlet;
import org.cloudbus.cloudsim.Log;
import org.cloudbus.cloudsim.core.CloudSim;
import org.workflowsim.CondorVM;
import org.workflowsim.WorkflowDatacenter;
import org.workflowsim.Job;
import org.workflowsim.WorkflowEngine;
import org.workflowsim.WorkflowPlanner;
import org.workflowsim.utils.ClusteringParameters;
import org.workflowsim.utils.OverheadParameters;
import org.workflowsim.utils.Parameters;
import org.workflowsim.utils.ReplicaCatalog;

import utils.Constants;

/**

  • This FCFS Scheduling Algorithm

  • @author Weiwei Chen

  • @SInCE WorkflowSim Toolkit 1.1

  • @Date Nov 9, 2013
    */
    public class FCFSSchedulingAlgorithmExample extends DataAwareSchedulingAlgorithmExample {

    ////////////////////////// STATIC METHODS ///////////////////////
    /**

    • Creates main() to run this example This example has only one datacenter

    • and one storage
      */
      public static void main(String[] args) {

      try {
      // First step: Initialize the WorkflowSim package.
      /**
      * However, the exact number of vms may not necessarily be vmNum If
      * the data center or the host doesn't have sufficient resources the
      * exact vmNum would be smaller than that. Take care.
      /
      int vmNum = 2;//number of vms;
      /
      *
      * Should change this based on real physical path
      */
      String daxPath = "C://Users//Lenovo//Downloads//WorkflowSim-1.0-master//WorkflowSim-1.0-master//config//dax/Montage_25.xml";

       File daxFile = new File(daxPath);
       if (!daxFile.exists()) {
           Log.printLine("Warning: Please replace daxPath with the physical path in your working environment!");
           return;
       }
      
       /**
        * Since we are using HEFT planning algorithm, the scheduling
        * algorithm should be static such that the scheduler would not
        * override the result of the planner
        */
       Parameters.SchedulingAlgorithm sch_method = Parameters.SchedulingAlgorithm.FCFS;
       Parameters.PlanningAlgorithm pln_method = Parameters.PlanningAlgorithm.INVALID;
       ReplicaCatalog.FileSystem file_system = ReplicaCatalog.FileSystem.LOCAL;
      
       /**
        * No overheads
        */
       OverheadParameters op = new OverheadParameters(0, null, null, null, null, 0);
      
       /**
        * No Clustering
        */
       ClusteringParameters.ClusteringMethod method = ClusteringParameters.ClusteringMethod.NONE;
       ClusteringParameters cp = new ClusteringParameters(0, 0, method, null);
      
       /**
        * Initialize static parameters
        */
       Parameters.init(vmNum, daxPath, null,
               null, op, cp, sch_method, pln_method,
               null, 0);
       ReplicaCatalog.init(file_system);
      
       // before creating any entities.
       int num_user = 1;   // 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);
      
       WorkflowDatacenter datacenter0 = createDatacenter("Datacenter_0");
      
       /**
        * Create a WorkflowPlanner with one schedulers.
        */
       WorkflowPlanner wfPlanner = new WorkflowPlanner("planner_0", 1);
       /**
        * Create a WorkflowEngine.
        */
       WorkflowEngine wfEngine = wfPlanner.getWorkflowEngine();
       /**
        * Create a list of VMs.The userId of a vm is basically the id of
        * the scheduler that controls this vm.
        */
       List<CondorVM> vmlist0 = createVM(wfEngine.getSchedulerId(0), Parameters.getVmNum());
      
       /**
        * Submits this list of vms to this WorkflowEngine.
        */
       wfEngine.submitVmList(vmlist0, 0);
      
       /**
        * Binds the data centers with the scheduler.
        */
       wfEngine.bindSchedulerDatacenter(datacenter0.getId(), 0);
      
       CloudSim.startSimulation();
       List<Job> outputList0 = wfEngine.getJobsReceivedList();
       CloudSim.stopSimulation();
       printJobList(outputList0);
      

      } catch (Exception e) {
      Log.printLine("The simulation has been terminated due to an unexpected error");
      }

    }

    }

I want to add makespan code in this code.

This is my code for

how to compute?