Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Update copyright headers.
[simgrid.git] / examples / java / cloud / migration / Test.java
index 7edd538..6f7686e 100644 (file)
-/* Copyright (c) 2014. The SimGrid Team.
- * All rights reserved.                                                     */
+/* Copyright (c) 2014-2018. The SimGrid Team. All rights reserved.          */
 
 /* This program is free software; you can redistribute it and/or modify it
  * under the terms of the license (GNU LGPL) which comes with this package. */
 
 package cloud.migration;
-
-import org.simgrid.msg.*;
-import org.simgrid.msg.Process;
 import java.util.ArrayList;
 import java.util.List;
 
+import org.simgrid.msg.Host;
+import org.simgrid.msg.HostFailureException;
+import org.simgrid.msg.HostNotFoundException;
+import org.simgrid.msg.Msg;
+import org.simgrid.msg.MsgException;
+import org.simgrid.msg.Process;
+import org.simgrid.msg.VM;
+
 public class Test extends Process{
 
-    Test(Host host, String name, String[] args) throws HostNotFoundException, NativeException  {
-        super(host, name, args);
+  Test(String hostname, String name) throws HostNotFoundException {
+    super(hostname, name);
+  }
+
+  public void doMigration(VM vm, Host src, Host dst) throws HostFailureException{
+    Msg.info("     - Launch migration from "+ src.getName() +" to " + dst.getName());
+    double startTime = Msg.getClock();
+    vm.migrate(dst);
+    double endTime = Msg.getClock();
+    Msg.info("     - End of Migration from "+ src.getName() +" to " + dst.getName()+ " (duration:" +
+             (endTime-startTime)+")");
+  }
+
+  public void main(String[] strings) throws MsgException {
+    Host host0 = Host.getByName("PM0");
+    Host host1 = Host.getByName("PM1");
+
+    List<VM> vms = new ArrayList<>();
+
+    /* Create VM1 */
+    int dpRate = 70;
+    int load1 = 90;
+    int load2 = 80;
+
+    Msg.info("This example evaluates the migration time of a VM in presence of collocated VMs on the source and "
+             + "the dest nodes");
+    Msg.info("The migrated VM has a memory intensity rate of 70% of the network BW and a cpu load of 90% \" "
+             +"(see cloudcom 2013 paper \"Adding a Live Migration Model Into SimGrid\" for further information) ");
+
+    Msg.info("Load of collocated VMs fluctuate between 0 and 90% in order to create a starvation issue and see "
+             + "whether it impacts or not the migration time");
+    XVM vm1 = new XVM(host0, "vm0",
+        2048, // Ramsize,
+        125, // Net bandwidth,
+        dpRate // Memory intensity
+        );
+    vms.add(vm1);
+    vm1.start();
+
+    /* Collocated VMs */
+    int[] vmSrcLoad = {
+        80,
+        0,
+        90,
+        40,
+        30,
+        90,
+    };
+
+    XVM tmp;
+    for (int i=1 ; i<= vmSrcLoad.length ; i++){
+      tmp = new XVM(host0, "vm"+i,
+          2048, // Ramsize,
+          125, // Net bandwidth,
+          dpRate // Memory intensity
+          );
+      vms.add(tmp);
+      tmp.start();
+      tmp.setLoad(vmSrcLoad[i-1]);
     }
 
-    public void main(String[] strings) throws MsgException {
-
-       double startTime = 0;
-       double endTime = 0;
-
-       /* get hosts 1 and 2*/
-        Host host0 = null;
-        Host host1 = null;
-
-        try {
-            host0 = Host.getByName("host0");
-            host1 = Host.getByName("host1");
-        }catch (HostNotFoundException e) {
-            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
-        }
-
-        List<VM> vms = new ArrayList<VM>();
-
-      /* Create VM1 */
-        int dpRate = 70;
-        int load1 = 90;
-        int load2 = 80;
-
-
-                 Msg.info("This example evaluates the migration time of a VM in presence of collocated VMs on the source and the dest nodes");
-                 Msg.info("The migrated VM has a memory intensity rate of 70% of the network BW and a cpu load of 90% \"(see cloudcom 2013 paper \"Adding a Live Migration Model Into SimGrid\" for further information) ");
-
-                 Msg.info("Load of collocated VMs fluctuate between 0 and 90% in order to create a starvation issue and see whether it impacts or not the migration time");
-        XVM vm1 = null;
-        vm1 = new XVM(
-                host0,
-                "vm0",
-                1, // Nb of vcpu
-                2048, // Ramsize,
-                125, // Net Bandwidth
-                null, //VM disk image
-                -1,   //size of disk image,
-                125, // Net bandwidth,
-                dpRate // Memory intensity
-        );
-        vms.add(vm1);
-        vm1.start();
-
-        /* Collocated VMs */
-        int collocatedSrc = 6;
-        int vmSrcLoad[] = {
-                80,
-                0,
-                90,
-                40,
-                30,
-                90,
-        };
-
-        XVM tmp = null;
-        for (int i=1 ; i<= collocatedSrc ; i++){
-            tmp = new XVM(
-                    host0,
-                    "vm"+i,
-                    1, // Nb of vcpu
-                    2048, // Ramsize,
-                    125, // Net Bandwidth
-                    null, //VM disk image
-                    -1,   //size of disk image,
-                    125, // Net bandwidth,
-                    dpRate // Memory intensity
-            );
-            vms.add(tmp);
-            tmp.start();
-            tmp.setLoad(vmSrcLoad[i-1]);
-        }
-
-        int collocatedDst = 6;
-        int vmDstLoad[] = {
-                0,
-                40,
-                90,
-                100,
-                0,
-                80,
-        };
-
-        for (int i=1 ; i <= collocatedDst ; i++){
-            tmp = new XVM(
-                    host1,
-                    "vm"+(i+collocatedSrc),
-                    1, // Nb of vcpu
-                    2048, // Ramsize,
-                    125, // Net Bandwidth
-                    null, //VM disk image
-                    -1,   //size of disk image,
-                    125, // Net bandwidth,
-                    dpRate // Memory intensity
-            );
-            vms.add(tmp);
-            tmp.start();
-            tmp.setLoad(vmDstLoad[i-1]);
-        }
-
-        Msg.info("Round trip of VM1 (load "+load1+"%)");
-        vm1.setLoad(load1);
-        Msg.info("     - Launch migration from host 0 to host 1");
-        startTime = Msg.getClock();
-        vm1.migrate(host1);
-        endTime = Msg.getClock();
-        Msg.info("     - End of Migration from host 0 to host 1 (duration:"+(endTime-startTime)+")");
-        Msg.info("     - Launch migration from host 1 to host 0");
-        startTime = Msg.getClock();
-        vm1.migrate(host0);
-        endTime = Msg.getClock();
-        Msg.info("     - End of Migration from host 1 to host 0 (duration:"+(endTime-startTime)+")");
-
-
-        Msg.info("\n \n \nRound trip of VM1 (load "+load2+"%)");
-        vm1.setLoad(load2);
-        Msg.info("     - Launch migration from host 0 to host 1");
-        startTime = Msg.getClock();
-        vm1.migrate(host1);
-        endTime = Msg.getClock();
-        Msg.info("     - End of Migration from host 0 to host 1 (duration:"+(endTime-startTime)+")");
-        Msg.info("     - Launch migration from host 1 to host 0");
-        startTime = Msg.getClock();
-        vm1.migrate(host0);
-        endTime = Msg.getClock();
-        Msg.info("     - End of Migration from host 1 to host 0 (duration:"+(endTime-startTime)+")");
-
-        Main.setEndOfTest();
-        Msg.info("Destroy VMs");
-        for (VM vm: vms)
-          vm.destroy();
+    int[] vmDstLoad = {
+        0,
+        40,
+        90,
+        100,
+        0,
+        80,
+    };
+
+    for (int i=1 ; i <= vmDstLoad.length ; i++){
+      tmp = new XVM(host1, "vm"+(i+vmSrcLoad.length),
+          2048, // Ramsize,
+          125, // Net bandwidth,
+          dpRate // Memory intensity
+          );
+      vms.add(tmp);
+      tmp.start();
+      tmp.setLoad(vmDstLoad[i-1]);
     }
+
+    Msg.info("Round trip of VM1 (load "+load1+"%)");
+    vm1.setLoad(load1);
+    doMigration(vm1, host0, host1);
+    doMigration(vm1, host1, host0);
+    Msg.info("");
+    Msg.info("");
+    Msg.info("Round trip of VM1 (load "+load2+"%)");
+    vm1.setLoad(load2);
+    doMigration(vm1, host0, host1);
+    doMigration(vm1, host1, host0);
+
+    Main.setEndOfTest();
+    Msg.info("Forcefully destroy VMs");
+    for (VM vm: vms)
+      vm.destroy();
+  }
 }