1 /* Copyright (c) 2014, 2016. The SimGrid Team.
2 * All rights reserved. */
4 /* This program is free software; you can redistribute it and/or modify it
5 * under the terms of the license (GNU LGPL) which comes with this package. */
7 package cloud.migration;
8 import java.util.ArrayList;
11 import org.simgrid.msg.Host;
12 import org.simgrid.msg.HostFailureException;
13 import org.simgrid.msg.HostNotFoundException;
14 import org.simgrid.msg.Msg;
15 import org.simgrid.msg.MsgException;
16 import org.simgrid.msg.Process;
17 import org.simgrid.msg.VM;
19 public class Test extends Process{
21 Test(String hostname, String name) throws HostNotFoundException {
22 super(hostname, name);
25 public void doMigration(VM vm, Host src, Host dst) throws HostFailureException{
26 Msg.info(" - Launch migration from "+ src.getName() +" to " + dst.getName());
27 double startTime = Msg.getClock();
29 double endTime = Msg.getClock();
30 Msg.info(" - End of Migration from "+ src.getName() +" to " + dst.getName()+ " (duration:" +
31 (endTime-startTime)+")");
34 public void main(String[] strings) throws MsgException {
38 /* get hosts 1 and 2*/
39 host0 = Host.getByName("PM0");
40 host1 = Host.getByName("PM1");
41 }catch (HostNotFoundException e) {
45 List<VM> vms = new ArrayList<VM>();
52 Msg.info("This example evaluates the migration time of a VM in presence of collocated VMs on the source and "
54 Msg.info("The migrated VM has a memory intensity rate of 70% of the network BW and a cpu load of 90% \" "
55 +"(see cloudcom 2013 paper \"Adding a Live Migration Model Into SimGrid\" for further information) ");
57 Msg.info("Load of collocated VMs fluctuate between 0 and 90% in order to create a starvation issue and see "
58 + "whether it impacts or not the migration time");
59 XVM vm1 = new XVM(host0, "vm0",
61 125, // Net bandwidth,
62 dpRate // Memory intensity
68 int collocatedSrc = 6;
79 for (int i=1 ; i<= collocatedSrc ; i++){
80 tmp = new XVM(host0, "vm"+i,
82 125, // Net bandwidth,
83 dpRate // Memory intensity
87 tmp.setLoad(vmSrcLoad[i-1]);
90 int collocatedDst = 6;
100 for (int i=1 ; i <= collocatedDst ; i++){
101 tmp = new XVM(host1, "vm"+(i+collocatedSrc),
103 125, // Net bandwidth,
104 dpRate // Memory intensity
108 tmp.setLoad(vmDstLoad[i-1]);
111 Msg.info("Round trip of VM1 (load "+load1+"%)");
113 doMigration(vm1, host0, host1);
114 doMigration(vm1, host1, host0);
117 Msg.info("Round trip of VM1 (load "+load2+"%)");
119 doMigration(vm1, host0, host1);
120 doMigration(vm1, host1, host0);
123 Msg.info("Forcefully destroy VMs");