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;
12 import org.simgrid.msg.*;
13 import org.simgrid.msg.Process;
15 public class Test extends Process{
17 Test(String hostname, String name) throws HostNotFoundException, NativeException {
18 super(hostname, name);
21 public void doMigration(VM vm, Host src, Host dst) throws HostFailureException{
22 Msg.info(" - Launch migration from "+ src.getName() +" to " + dst.getName());
23 double startTime = Msg.getClock();
25 double endTime = Msg.getClock();
26 Msg.info(" - End of Migration from "+ src.getName() +" to " + dst.getName()+ " (duration:" +
27 (endTime-startTime)+")");
30 public void main(String[] strings) throws MsgException {
34 /* get hosts 1 and 2*/
35 host0 = Host.getByName("PM0");
36 host1 = Host.getByName("PM1");
37 }catch (HostNotFoundException e) {
41 List<VM> vms = new ArrayList<>();
48 Msg.info("This example evaluates the migration time of a VM in presence of collocated VMs on the source and "
50 Msg.info("The migrated VM has a memory intensity rate of 70% of the network BW and a cpu load of 90% \" "
51 +"(see cloudcom 2013 paper \"Adding a Live Migration Model Into SimGrid\" for further information) ");
53 Msg.info("Load of collocated VMs fluctuate between 0 and 90% in order to create a starvation issue and see "
54 + "whether it impacts or not the migration time");
55 XVM vm1 = new XVM(host0, "vm0",
60 -1, //size of disk image,
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,
85 -1, //size of disk image,
86 125, // Net bandwidth,
87 dpRate // Memory intensity
91 tmp.setLoad(vmSrcLoad[i-1]);
94 int collocatedDst = 6;
104 for (int i=1 ; i <= collocatedDst ; i++){
105 tmp = new XVM(host1, "vm"+(i+collocatedSrc),
108 125, // Net Bandwidth
109 null, //VM disk image
110 -1, //size of disk image,
111 125, // Net bandwidth,
112 dpRate // Memory intensity
116 tmp.setLoad(vmDstLoad[i-1]);
119 Msg.info("Round trip of VM1 (load "+load1+"%)");
121 doMigration(vm1, host0, host1);
122 doMigration(vm1, host1, host0);
125 Msg.info("Round trip of VM1 (load "+load2+"%)");
127 doMigration(vm1, host0, host1);
128 doMigration(vm1, host1, host0);
131 Msg.info("Forcefully destroy VMs");