Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Change the way VMs are created.
authorSUTER Frederic <frederic.suter@cc.in2p3.fr>
Wed, 27 Oct 2021 10:59:02 +0000 (12:59 +0200)
committerSUTER Frederic <frederic.suter@cc.in2p3.fr>
Wed, 27 Oct 2021 10:59:02 +0000 (12:59 +0200)
Instead of explicitly calling the ctor with new, use the physical host
as a factory thanks to the new Host::create_vm() method.

14 files changed:
examples/cpp/cloud-capping/s4u-cloud-capping.cpp
examples/cpp/cloud-migration/s4u-cloud-migration.cpp
examples/cpp/cloud-simple/s4u-cloud-simple.cpp
examples/cpp/energy-vm/s4u-energy-vm.cpp
include/simgrid/s4u/Host.hpp
src/plugins/vm/VmLiveMigration.cpp
src/plugins/vm/s4u_VirtualMachine.cpp
src/s4u/s4u_Host.cpp
teshsuite/models/cloud-sharing/cloud-sharing.cpp
teshsuite/s4u/cloud-interrupt-migration/cloud-interrupt-migration.cpp
teshsuite/s4u/cloud-two-execs/cloud-two-execs.cpp
teshsuite/s4u/host-on-off-actors/host-on-off-actors.cpp
teshsuite/s4u/vm-live-migration/vm-live-migration.cpp
teshsuite/s4u/vm-suicide/vm-suicide.cpp

index b091001..02bbafd 100644 (file)
@@ -56,8 +56,8 @@ static void test_dynamic_change()
 {
   simgrid::s4u::Host* pm0 = simgrid::s4u::Host::by_name("Fafard");
 
-  auto* vm0 = new simgrid::s4u::VirtualMachine("VM0", pm0, 1);
-  auto* vm1 = new simgrid::s4u::VirtualMachine("VM1", pm0, 1);
+  auto* vm0 = pm0->create_vm("VM0", 1);
+  auto* vm1 = pm0->create_vm("VM1", 1);
   vm0->start();
   vm1->start();
 
@@ -165,7 +165,7 @@ static void master_main()
   test_two_activities(pm0, pm0);
   XBT_INFO(".");
 
-  auto* vm0 = new simgrid::s4u::VirtualMachine("VM0", pm0, 1);
+  auto* vm0 = pm0->create_vm("VM0", 1);
   vm0->start();
 
   XBT_INFO("# 3. Put a single activity on a VM.");
@@ -178,7 +178,7 @@ static void master_main()
 
   vm0->destroy();
 
-  vm0 = new simgrid::s4u::VirtualMachine("VM0", pm0, 1);
+  vm0 = pm0->create_vm("VM0", 1);
   vm0->start();
 
   XBT_INFO("# 6. Put an activity on a PM and an activity on a VM.");
@@ -187,7 +187,7 @@ static void master_main()
 
   vm0->destroy();
 
-  vm0 = new simgrid::s4u::VirtualMachine("VM0", pm0, 1);
+  vm0 = pm0->create_vm("VM0", 1);
   vm0->set_bound(pm0->get_speed() / 10);
   vm0->start();
 
@@ -205,7 +205,7 @@ static void master_main()
 
   vm0->destroy();
 
-  vm0 = new simgrid::s4u::VirtualMachine("VM0", pm0, 1);
+  vm0 = pm0->create_vm("VM0", 1);
   vm0->set_ramsize(1e9); // 1GB
   vm0->start();
 
index 7519fce..f58fc6d 100644 (file)
@@ -30,7 +30,7 @@ static void master_main()
   simgrid::s4u::Host* pm1 = simgrid::s4u::Host::by_name("Tremblay");
   simgrid::s4u::Host* pm2 = simgrid::s4u::Host::by_name("Bourassa");
 
-  auto* vm0 = new simgrid::s4u::VirtualMachine("VM0", pm0, 1);
+  auto* vm0 = pm0->create_vm("VM0", 1);
   vm0->set_ramsize(1e9); // 1Gbytes
   vm0->start();
 
@@ -39,7 +39,7 @@ static void master_main()
 
   vm0->destroy();
 
-  vm0 = new simgrid::s4u::VirtualMachine("VM0", pm0, 1);
+  vm0 = pm0->create_vm("VM0", 1);
   vm0->set_ramsize(1e8); // 100Mbytes
   vm0->start();
 
@@ -48,8 +48,8 @@ static void master_main()
 
   vm0->destroy();
 
-  vm0       = new simgrid::s4u::VirtualMachine("VM0", pm0, 1);
-  auto* vm1 = new simgrid::s4u::VirtualMachine("VM1", pm0, 1);
+  vm0       = pm0->create_vm("VM0", 1);
+  auto* vm1 = pm0->create_vm("VM1", 1);
 
   vm0->set_ramsize(1e9); // 1Gbytes
   vm1->set_ramsize(1e9); // 1Gbytes
@@ -64,8 +64,8 @@ static void master_main()
   vm0->destroy();
   vm1->destroy();
 
-  vm0 = new simgrid::s4u::VirtualMachine("VM0", pm0, 1);
-  vm1 = new simgrid::s4u::VirtualMachine("VM1", pm0, 1);
+  vm0 = pm0->create_vm("VM0", 1);
+  vm1 = pm0->create_vm("VM1", 1);
 
   vm0->set_ramsize(1e9); // 1Gbytes
   vm1->set_ramsize(1e9); // 1Gbytes
index 6ef3e2c..e9e6e34 100644 (file)
@@ -93,7 +93,7 @@ static void master_main()
       "## Test 2 (started): check impact of running an activity inside a VM (there is no degradation for the moment)");
 
   XBT_INFO("### Put a VM on a PM, and put an activity to the VM");
-  auto* vm0 = new simgrid::s4u::VirtualMachine("VM0", pm0, 1);
+  auto* vm0 = pm0->create_vm("VM0", 1);
   vm0->start();
   launch_computation_worker(vm0);
   simgrid::s4u::this_actor::sleep_for(2);
@@ -105,7 +105,7 @@ static void master_main()
            "the moment)");
 
   XBT_INFO("### Put a VM on a PM, and put an activity to the PM");
-  vm0 = new simgrid::s4u::VirtualMachine("VM0", pm0, 1);
+  vm0 = pm0->create_vm("VM0", 1);
   vm0->start();
   launch_computation_worker(pm0);
   simgrid::s4u::this_actor::sleep_for(2);
@@ -117,9 +117,9 @@ static void master_main()
       " the moment, there is no degradation for the VMs. Hence, the time should be equals to the time of test 1");
 
   XBT_INFO("### Put two VMs on a PM, and put an activity to each VM");
-  vm0 = new simgrid::s4u::VirtualMachine("VM0", pm0, 1);
+  vm0 = pm0->create_vm("VM0", 1);
   vm0->start();
-  auto* vm1 = new simgrid::s4u::VirtualMachine("VM1", pm0, 1);
+  auto* vm1 = pm0->create_vm("VM1", 1);
   launch_computation_worker(vm0);
   launch_computation_worker(vm1);
   simgrid::s4u::this_actor::sleep_for(2);
@@ -127,8 +127,8 @@ static void master_main()
   vm1->destroy();
 
   XBT_INFO("### Put a VM on each PM, and put an activity to each VM");
-  vm0 = new simgrid::s4u::VirtualMachine("VM0", pm0, 1);
-  vm1 = new simgrid::s4u::VirtualMachine("VM1", pm1, 1);
+  vm0 = pm0->create_vm("VM0", 1);
+  vm1 = pm1->create_vm("VM1", 1);
   vm0->start();
   vm1->start();
   launch_computation_worker(vm0);
@@ -149,20 +149,20 @@ static void master_main()
   simgrid::s4u::this_actor::sleep_for(5);
 
   XBT_INFO("### Make a connection between PM0 and VM0@PM0");
-  vm0 = new simgrid::s4u::VirtualMachine("VM0", pm0, 1);
+  vm0 = pm0->create_vm("VM0", 1);
   vm0->start();
   launch_communication_worker(pm0, vm0);
   simgrid::s4u::this_actor::sleep_for(5);
   vm0->destroy();
 
   XBT_INFO("### Make a connection between PM0 and VM0@PM1");
-  vm0 = new simgrid::s4u::VirtualMachine("VM0", pm1, 1);
+  vm0 = pm1->create_vm("VM0", 1);
   launch_communication_worker(pm0, vm0);
   simgrid::s4u::this_actor::sleep_for(5);
   vm0->destroy();
 
   XBT_INFO("### Make two connections between PM0 and VM0@PM1");
-  vm0 = new simgrid::s4u::VirtualMachine("VM0", pm1, 1);
+  vm0 = pm1->create_vm("VM0", 1);
   vm0->start();
   launch_communication_worker(pm0, vm0);
   launch_communication_worker(pm0, vm0);
@@ -170,7 +170,7 @@ static void master_main()
   vm0->destroy();
 
   XBT_INFO("### Make a connection between PM0 and VM0@PM1, and also make a connection between PM0 and PM1");
-  vm0 = new simgrid::s4u::VirtualMachine("VM0", pm1, 1);
+  vm0 = pm1->create_vm("VM0", 1);
   vm0->start();
   launch_communication_worker(pm0, vm0);
   launch_communication_worker(pm0, pm1);
@@ -178,8 +178,8 @@ static void master_main()
   vm0->destroy();
 
   XBT_INFO("### Make a connection between VM0@PM0 and PM1@PM1, and also make a connection between VM0@PM0 and VM1@PM1");
-  vm0 = new simgrid::s4u::VirtualMachine("VM0", pm0, 1);
-  vm1 = new simgrid::s4u::VirtualMachine("VM1", pm1, 1);
+  vm0 = pm0->create_vm("VM0", 1);
+  vm1 = pm1->create_vm("VM1", 1);
   vm0->start();
   vm1->start();
   launch_communication_worker(vm0, vm1);
@@ -192,7 +192,7 @@ static void master_main()
   XBT_INFO("## Test 6 (started): Check migration impact (not yet implemented neither on the CPU resource nor on the"
            " network one");
   XBT_INFO("### Relocate VM0 between PM0 and PM1");
-  vm0 = new simgrid::s4u::VirtualMachine("VM0", pm0, 1);
+  vm0 = pm0->create_vm("VM0", 1);
   vm0->set_ramsize(1L * 1024 * 1024 * 1024); // 1GiB
 
   vm0->start();
index 872274b..8137b85 100644 (file)
@@ -23,9 +23,9 @@ static void dvfs()
 
   /* Host 1 */
   XBT_INFO("Creating and starting two VMs");
-  auto* vm_host1 = new simgrid::s4u::VirtualMachine("vm_host1", host1, 1);
+  auto* vm_host1 = host1->create_vm("vm_host1", 1);
   vm_host1->start();
-  auto* vm_host2 = new simgrid::s4u::VirtualMachine("vm_host2", host2, 1);
+  auto* vm_host2 = host2->create_vm("vm_host2", 1);
   vm_host2->start();
 
   XBT_INFO("Create two activities on Host1: both inside a VM");
index 2537303..b3b1821 100644 (file)
@@ -213,6 +213,9 @@ public:
   void add_disk(const Disk* disk);
   void remove_disk(const std::string& disk_name);
 
+  VirtualMachine* create_vm(const std::string& name, int core_amount);
+  VirtualMachine* create_vm(const std::string& name, int core_amount, size_t ramsize);
+
   void route_to(const Host* dest, std::vector<Link*>& links, double* latency) const;
   void route_to(const Host* dest, std::vector<kernel::resource::LinkImpl*>& links, double* latency) const;
 
index 81c554e..6f7413d 100644 (file)
@@ -297,7 +297,7 @@ simgrid::s4u::VirtualMachine* sg_vm_create_migratable(simgrid::s4u::Host* pm, co
 
   /* For the moment, intensity_rate is the percentage against the migration bandwidth */
 
-  auto* vm = new simgrid::s4u::VirtualMachine(name, pm, coreAmount, static_cast<sg_size_t>(ramsize) * 1024 * 1024);
+  auto* vm = pm->create_vm(name, coreAmount, static_cast<sg_size_t>(ramsize) * 1024 * 1024);
   sg_vm_set_dirty_page_intensity(vm, dp_intensity / 100.0);
   sg_vm_set_working_set_memory(vm, vm->get_ramsize() * 0.9); // assume working set memory is 90% of ramsize
   sg_vm_set_migration_speed(vm, mig_netspeed * 1024 * 1024.0);
index a317f75..0285832 100644 (file)
@@ -216,7 +216,7 @@ sg_vm_t sg_vm_create_core(sg_host_t pm, const char* name)
  */
 sg_vm_t sg_vm_create_multicore(sg_host_t pm, const char* name, int coreAmount)
 {
-  return new simgrid::s4u::VirtualMachine(name, pm, coreAmount);
+  return pm->create_vm(name, coreAmount);
 }
 
 const char* sg_vm_get_name(const_sg_vm_t vm)
index 0697221..12ce201 100644 (file)
@@ -375,6 +375,16 @@ void Host::remove_disk(const std::string& disk_name)
   kernel::actor::simcall([this, disk_name] { this->pimpl_->remove_disk(disk_name); });
 }
 
+VirtualMachine* Host::create_vm(const std::string& name, int core_amount)
+{
+  return new VirtualMachine(name, this, core_amount);
+}
+
+VirtualMachine* Host::create_vm(const std::string& name, int core_amount, size_t ramsize)
+{
+  return new VirtualMachine(name, this, core_amount, ramsize);
+}
+
 ExecPtr Host::exec_init(double flops) const
 {
   return this_actor::exec_init(flops);
index 5e8cb75..4283ab2 100644 (file)
@@ -107,7 +107,7 @@ static void run_test(const std::string& chooser)
 
   } else if (chooser == "( [o]1 )1") {
     XBT_INFO("### Test '%s'. A task in a VM on a PM.", chooser.c_str());
-    vm0 = new simgrid::s4u::VirtualMachine("VM0", pm0, 1);
+    vm0 = pm0->create_vm("VM0", 1);
     run_test_process("( [X]1 )1", vm0, flop_amount);
     simgrid::s4u::this_actor::sleep_for(2);
     test_energy_consumption(chooser, 1);
@@ -115,7 +115,7 @@ static void run_test(const std::string& chooser)
 
   } else if (chooser == "( [oo]1 )1") {
     XBT_INFO("### Test '%s'. 2 tasks co-located in a VM on a PM.", chooser.c_str());
-    vm0 = new simgrid::s4u::VirtualMachine("VM0", pm0, 1);
+    vm0 = pm0->create_vm("VM0", 1);
     run_test_process("( [Xo]1 )1", vm0, flop_amount / 2);
     run_test_process("( [oX]1 )1", vm0, flop_amount / 2);
     simgrid::s4u::this_actor::sleep_for(2);
@@ -124,7 +124,7 @@ static void run_test(const std::string& chooser)
 
   } else if (chooser == "( [ ]1 o )1") {
     XBT_INFO("### Test '%s'. 1 task collocated with an empty VM", chooser.c_str());
-    vm0 = new simgrid::s4u::VirtualMachine("VM0", pm0, 1);
+    vm0 = pm0->create_vm("VM0", 1);
     run_test_process("( [ ]1 X )1", pm0, flop_amount);
     simgrid::s4u::this_actor::sleep_for(2);
     test_energy_consumption(chooser, 1);
@@ -132,7 +132,7 @@ static void run_test(const std::string& chooser)
 
   } else if (chooser == "( [o]1 o )1") {
     XBT_INFO("### Test '%s'. A task in a VM, plus a task", chooser.c_str());
-    vm0 = new simgrid::s4u::VirtualMachine("VM0", pm0, 1);
+    vm0 = pm0->create_vm("VM0", 1);
     run_test_process("( [X]1 o )1", vm0, flop_amount / 2);
     run_test_process("( [o]1 X )1", pm0, flop_amount / 2);
     simgrid::s4u::this_actor::sleep_for(2);
@@ -141,7 +141,7 @@ static void run_test(const std::string& chooser)
 
   } else if (chooser == "( [oo]1 o )1") {
     XBT_INFO("### Test '%s'. 2 tasks in a VM, plus a task", chooser.c_str());
-    vm0 = new simgrid::s4u::VirtualMachine("VM0", pm0, 1);
+    vm0 = pm0->create_vm("VM0", 1);
     run_test_process("( [Xo]1 o )1", vm0, flop_amount / 4);
     run_test_process("( [oX]1 o )1", vm0, flop_amount / 4);
     run_test_process("( [oo]1 X )1", pm0, flop_amount / 2);
@@ -172,7 +172,7 @@ static void run_test(const std::string& chooser)
 
   } else if (chooser == "( [o]1 )2") {
     XBT_INFO("### Test '%s'. A task in a VM on a bicore PM", chooser.c_str());
-    vm0 = new simgrid::s4u::VirtualMachine("VM0", pm2, 1);
+    vm0 = pm2->create_vm("VM0", 1);
     run_test_process("( [X]1 )2", vm0, flop_amount);
     simgrid::s4u::this_actor::sleep_for(2);
     test_energy_consumption(chooser, 1);
@@ -180,7 +180,7 @@ static void run_test(const std::string& chooser)
 
   } else if (chooser == "( [oo]1 )2") {
     XBT_INFO("### Test '%s'. 2 tasks in a VM on a bicore PM", chooser.c_str());
-    vm0 = new simgrid::s4u::VirtualMachine("VM0", pm2, 1);
+    vm0 = pm2->create_vm("VM0", 1);
     run_test_process("( [Xx]1 )2", vm0, flop_amount / 2);
     run_test_process("( [xX]1 )2", vm0, flop_amount / 2);
     simgrid::s4u::this_actor::sleep_for(2);
@@ -189,7 +189,7 @@ static void run_test(const std::string& chooser)
 
   } else if (chooser == "( [ ]1 o )2") {
     XBT_INFO("### Put a VM on a PM, and put a task to the PM");
-    vm0 = new simgrid::s4u::VirtualMachine("VM0", pm2, 1);
+    vm0 = pm2->create_vm("VM0", 1);
     run_test_process("( [ ]1 X )2", pm2, flop_amount);
     simgrid::s4u::this_actor::sleep_for(2);
     test_energy_consumption(chooser, 1);
@@ -197,7 +197,7 @@ static void run_test(const std::string& chooser)
 
   } else if (chooser == "( [o]1 o )2") {
     XBT_INFO("### Put a VM on a PM, put a task to the PM and a task to the VM");
-    vm0 = new simgrid::s4u::VirtualMachine("VM0", pm2, 1);
+    vm0 = pm2->create_vm("VM0", 1);
     run_test_process("( [X]1 x )2", vm0, flop_amount);
     run_test_process("( [x]1 X )2", pm2, flop_amount);
     simgrid::s4u::this_actor::sleep_for(2);
@@ -206,8 +206,8 @@ static void run_test(const std::string& chooser)
 
   } else if (chooser == "( [o]1 [ ]1 )2") {
     XBT_INFO("### Put two VMs on a PM, and put a task to one VM");
-    vm0       = new simgrid::s4u::VirtualMachine("VM0", pm2, 1);
-    auto* vm1 = new simgrid::s4u::VirtualMachine("VM1", pm2, 1);
+    vm0       = pm2->create_vm("VM0", 1);
+    auto* vm1 = pm2->create_vm("VM1", 1);
     run_test_process("( [X]1 [ ]1 )2", vm0, flop_amount);
     simgrid::s4u::this_actor::sleep_for(2);
     test_energy_consumption(chooser, 1);
@@ -216,8 +216,8 @@ static void run_test(const std::string& chooser)
 
   } else if (chooser == "( [o]1 [o]1 )2") {
     XBT_INFO("### Put two VMs on a PM, and put a task to each VM");
-    vm0       = new simgrid::s4u::VirtualMachine("VM0", pm2, 1);
-    auto* vm1 = new simgrid::s4u::VirtualMachine("VM1", pm2, 1);
+    vm0       = pm2->create_vm("VM0", 1);
+    auto* vm1 = pm2->create_vm("VM1", 1);
     run_test_process("( [X]1 [x]1 )2", vm0, flop_amount);
     run_test_process("( [x]1 [X]1 )2", vm1, flop_amount);
     simgrid::s4u::this_actor::sleep_for(2);
@@ -227,9 +227,9 @@ static void run_test(const std::string& chooser)
 
   } else if (chooser == "( [o]1 [o]1 [ ]1 )2") {
     XBT_INFO("### Put three VMs on a PM, and put a task to two VMs");
-    vm0       = new simgrid::s4u::VirtualMachine("VM0", pm2, 1);
-    auto* vm1 = new simgrid::s4u::VirtualMachine("VM1", pm2, 1);
-    auto* vm2 = new simgrid::s4u::VirtualMachine("VM2", pm2, 1);
+    vm0       = pm2->create_vm("VM0", 1);
+    auto* vm1 = pm2->create_vm("VM1", 1);
+    auto* vm2 = pm2->create_vm("VM2", 1);
     run_test_process("( [X]1 [x]1 [ ]1 )2", vm0, flop_amount);
     run_test_process("( [x]1 [X]1 [ ]1 )2", vm1, flop_amount);
     simgrid::s4u::this_actor::sleep_for(2);
@@ -240,9 +240,9 @@ static void run_test(const std::string& chooser)
 
   } else if (chooser == "( [o]1 [o]1 [o]1 )2") {
     XBT_INFO("### Put three VMs on a PM, and put a task to each VM");
-    vm0       = new simgrid::s4u::VirtualMachine("VM0", pm2, 1);
-    auto* vm1 = new simgrid::s4u::VirtualMachine("VM1", pm2, 1);
-    auto* vm2 = new simgrid::s4u::VirtualMachine("VM2", pm2, 1);
+    vm0       = pm2->create_vm("VM0", 1);
+    auto* vm1 = pm2->create_vm("VM1", 1);
+    auto* vm2 = pm2->create_vm("VM2", 1);
     run_test_process("( [X]1 [o]1 [o]1 )2", vm0, flop_amount * 2 / 3);
     run_test_process("( [o]1 [X]1 [o]1 )2", vm1, flop_amount * 2 / 3);
     run_test_process("( [o]1 [o]1 [X]1 )2", vm2, flop_amount * 2 / 3);
@@ -254,7 +254,7 @@ static void run_test(const std::string& chooser)
 
   } else if (chooser == "( [o]2 )2") {
     XBT_INFO("### Put a VM on a PM, and put a task to the VM");
-    vm0 = new simgrid::s4u::VirtualMachine("VM0", pm2, 2);
+    vm0 = pm2->create_vm("VM0", 2);
     run_test_process("( [X]2 )2", vm0, flop_amount);
     simgrid::s4u::this_actor::sleep_for(2);
     test_energy_consumption(chooser, 1);
@@ -262,7 +262,7 @@ static void run_test(const std::string& chooser)
 
   } else if (chooser == "( [oo]2 )2") {
     XBT_INFO("### Put a VM on a PM, and put two tasks to the VM");
-    vm0 = new simgrid::s4u::VirtualMachine("VM0", pm2, 2);
+    vm0 = pm2->create_vm("VM0", 2);
     run_test_process("( [Xo]2 )2", vm0, flop_amount);
     run_test_process("( [oX]2 )2", vm0, flop_amount);
     simgrid::s4u::this_actor::sleep_for(2);
@@ -271,7 +271,7 @@ static void run_test(const std::string& chooser)
 
   } else if (chooser == "( [ooo]2 )2") {
     XBT_INFO("### Put a VM on a PM, and put three tasks to the VM");
-    vm0 = new simgrid::s4u::VirtualMachine("VM0", pm2, 2);
+    vm0 = pm2->create_vm("VM0", 2);
     run_test_process("( [Xoo]2 )2", vm0, flop_amount * 2 / 3);
     run_test_process("( [oXo]2 )2", vm0, flop_amount * 2 / 3);
     run_test_process("( [ooX]2 )2", vm0, flop_amount * 2 / 3);
@@ -281,7 +281,7 @@ static void run_test(const std::string& chooser)
 
   } else if (chooser == "( [ ]2 o )2") {
     XBT_INFO("### Put a VM on a PM, and put a task to the PM");
-    vm0 = new simgrid::s4u::VirtualMachine("VM0", pm2, 2);
+    vm0 = pm2->create_vm("VM0", 2);
     run_test_process("( [ ]2 X )2", pm2, flop_amount);
     simgrid::s4u::this_actor::sleep_for(2);
     test_energy_consumption(chooser, 1);
@@ -289,7 +289,7 @@ static void run_test(const std::string& chooser)
 
   } else if (chooser == "( [o]2 o )2") {
     XBT_INFO("### Put a VM on a PM, put one task to the PM and one task to the VM");
-    vm0 = new simgrid::s4u::VirtualMachine("VM0", pm2, 2);
+    vm0 = pm2->create_vm("VM0", 2);
     run_test_process("( [o]2 X )2", pm2, flop_amount);
     run_test_process("( [X]2 o )2", vm0, flop_amount);
     simgrid::s4u::this_actor::sleep_for(2);
@@ -298,7 +298,7 @@ static void run_test(const std::string& chooser)
 
   } else if (chooser == "( [oo]2 o )2") {
     XBT_INFO("### Put a VM on a PM, put one task to the PM and two tasks to the VM");
-    vm0 = new simgrid::s4u::VirtualMachine("VM0", pm2, 2);
+    vm0 = pm2->create_vm("VM0", 2);
     run_test_process("( [oo]2 X )2", pm2, flop_amount * 2 / 3);
     run_test_process("( [Xo]2 o )2", vm0, flop_amount * 2 / 3);
     run_test_process("( [oX]2 o )2", vm0, flop_amount * 2 / 3);
@@ -308,7 +308,7 @@ static void run_test(const std::string& chooser)
 
   } else if (chooser == "( [ooo]2 o )2") {
     XBT_INFO("### Put a VM on a PM, put one task to the PM and three tasks to the VM");
-    vm0 = new simgrid::s4u::VirtualMachine("VM0", pm2, 2);
+    vm0 = pm2->create_vm("VM0", 2);
     run_test_process("( [ooo]2 X )2", pm2, flop_amount * 2 / 3);
     run_test_process("( [Xoo]2 o )2", vm0, (flop_amount * 4 / 3) / 3); // VM_share/3
     run_test_process("( [oXo]2 o )2", vm0, (flop_amount * 4 / 3) / 3); // VM_share/3
@@ -319,7 +319,7 @@ static void run_test(const std::string& chooser)
 
   } else if (chooser == "( [ ]2 oo )2") {
     XBT_INFO("### Put a VM on a PM, and put two tasks to the PM");
-    vm0 = new simgrid::s4u::VirtualMachine("VM0", pm2, 2);
+    vm0 = pm2->create_vm("VM0", 2);
     run_test_process("( [ ]2 Xo )2", pm2, flop_amount);
     run_test_process("( [ ]2 oX )2", pm2, flop_amount);
     simgrid::s4u::this_actor::sleep_for(2);
@@ -328,7 +328,7 @@ static void run_test(const std::string& chooser)
 
   } else if (chooser == "( [o]2 oo )2") {
     XBT_INFO("### Put a VM on a PM, put one task to the PM and one task to the VM");
-    vm0 = new simgrid::s4u::VirtualMachine("VM0", pm2, 2);
+    vm0 = pm2->create_vm("VM0", 2);
     run_test_process("( [o]2 Xo )2", pm2, flop_amount * 2 / 3);
     run_test_process("( [o]2 oX )2", pm2, flop_amount * 2 / 3);
     run_test_process("( [X]2 oo )2", vm0, flop_amount * 2 / 3);
@@ -338,7 +338,7 @@ static void run_test(const std::string& chooser)
 
   } else if (chooser == "( [oo]2 oo )2") {
     XBT_INFO("### Put a VM on a PM, put one task to the PM and two tasks to the VM");
-    vm0 = new simgrid::s4u::VirtualMachine("VM0", pm2, 2);
+    vm0 = pm2->create_vm("VM0", 2);
     run_test_process("( [oo]2 Xo )2", pm2, flop_amount / 2);
     run_test_process("( [oo]2 oX )2", pm2, flop_amount / 2);
     run_test_process("( [Xo]2 oo )2", vm0, flop_amount / 2);
@@ -349,7 +349,7 @@ static void run_test(const std::string& chooser)
 
   } else if (chooser == "( [ooo]2 oo )2") {
     XBT_INFO("### Put a VM on a PM, put one task to the PM and three tasks to the VM");
-    vm0 = new simgrid::s4u::VirtualMachine("VM0", pm2, 2);
+    vm0 = pm2->create_vm("VM0", 2);
     run_test_process("( [ooo]2 Xo )2", pm2, flop_amount * 2 / 4);
     run_test_process("( [ooo]2 oX )2", pm2, flop_amount * 2 / 4);
     run_test_process("( [Xoo]2 oo )2", vm0, flop_amount / 3);
@@ -361,7 +361,7 @@ static void run_test(const std::string& chooser)
 
   } else if (chooser == "( [o]2 )4") {
     XBT_INFO("### Put a VM on a PM, and put a task to the VM");
-    vm0 = new simgrid::s4u::VirtualMachine("VM0", pm4, 2);
+    vm0 = pm4->create_vm("VM0", 2);
     run_test_process("( [X]2 )4", vm0, flop_amount);
     simgrid::s4u::this_actor::sleep_for(2);
     test_energy_consumption(chooser, 1);
@@ -369,7 +369,7 @@ static void run_test(const std::string& chooser)
 
   } else if (chooser == "( [oo]2 )4") {
     XBT_INFO("### Put a VM on a PM, and put two tasks to the VM");
-    vm0 = new simgrid::s4u::VirtualMachine("VM0", pm4, 2);
+    vm0 = pm4->create_vm("VM0", 2);
     run_test_process("( [Xo]2 )4", vm0, flop_amount);
     run_test_process("( [oX]2 )4", vm0, flop_amount);
     simgrid::s4u::this_actor::sleep_for(2);
@@ -378,7 +378,7 @@ static void run_test(const std::string& chooser)
 
   } else if (chooser == "( [ooo]2 )4") {
     XBT_INFO("### ( [ooo]2 )4: Put a VM on a PM, and put three tasks to the VM");
-    vm0 = new simgrid::s4u::VirtualMachine("VM0", pm4, 2);
+    vm0 = pm4->create_vm("VM0", 2);
     run_test_process("( [Xoo]2 )4", vm0, flop_amount * 2 / 3);
     run_test_process("( [oXo]2 )4", vm0, flop_amount * 2 / 3);
     run_test_process("( [ooX]2 )4", vm0, flop_amount * 2 / 3);
@@ -388,7 +388,7 @@ static void run_test(const std::string& chooser)
 
   } else if (chooser == "( [ ]2 o )4") {
     XBT_INFO("### Put a VM on a PM, and put a task to the PM");
-    vm0 = new simgrid::s4u::VirtualMachine("VM0", pm4, 2);
+    vm0 = pm4->create_vm("VM0", 2);
     run_test_process("( [ ]2 X )4", pm4, flop_amount);
     simgrid::s4u::this_actor::sleep_for(2);
     test_energy_consumption(chooser, 1);
@@ -396,7 +396,7 @@ static void run_test(const std::string& chooser)
 
   } else if (chooser == "( [ ]2 oo )4") {
     XBT_INFO("### Put a VM on a PM, and put two tasks to the PM");
-    vm0 = new simgrid::s4u::VirtualMachine("VM0", pm4, 2);
+    vm0 = pm4->create_vm("VM0", 2);
     run_test_process("( [ ]2 Xo )4", pm4, flop_amount);
     run_test_process("( [ ]2 oX )4", pm4, flop_amount);
     simgrid::s4u::this_actor::sleep_for(2);
@@ -405,7 +405,7 @@ static void run_test(const std::string& chooser)
 
   } else if (chooser == "( [ ]2 ooo )4") {
     XBT_INFO("### Put a VM on a PM, and put three tasks to the PM");
-    vm0 = new simgrid::s4u::VirtualMachine("VM0", pm4, 2);
+    vm0 = pm4->create_vm("VM0", 2);
     run_test_process("( [ ]2 Xoo )4", pm4, flop_amount);
     run_test_process("( [ ]2 oXo )4", pm4, flop_amount);
     run_test_process("( [ ]2 ooX )4", pm4, flop_amount);
@@ -415,7 +415,7 @@ static void run_test(const std::string& chooser)
 
   } else if (chooser == "( [ ]2 oooo )4") {
     XBT_INFO("### Put a VM on a PM, and put four tasks to the PM");
-    vm0 = new simgrid::s4u::VirtualMachine("VM0", pm4, 2);
+    vm0 = pm4->create_vm("VM0", 2);
     run_test_process("( [ ]2 Xooo )4", pm4, flop_amount);
     run_test_process("( [ ]2 oXoo )4", pm4, flop_amount);
     run_test_process("( [ ]2 ooXo )4", pm4, flop_amount);
@@ -426,7 +426,7 @@ static void run_test(const std::string& chooser)
 
   } else if (chooser == "( [o]2 o )4") {
     XBT_INFO("### Put a VM on a PM, and put one task to the PM and one task to the VM");
-    vm0 = new simgrid::s4u::VirtualMachine("VM0", pm4, 2);
+    vm0 = pm4->create_vm("VM0", 2);
     run_test_process("( [X]2 o )4", vm0, flop_amount);
     run_test_process("( [o]2 X )4", pm4, flop_amount);
     simgrid::s4u::this_actor::sleep_for(2);
@@ -435,7 +435,7 @@ static void run_test(const std::string& chooser)
 
   } else if (chooser == "( [o]2 oo )4") {
     XBT_INFO("### Put a VM on a PM, and put two tasks to the PM and one task to the VM");
-    vm0 = new simgrid::s4u::VirtualMachine("VM0", pm4, 2);
+    vm0 = pm4->create_vm("VM0", 2);
     run_test_process("( [X]2 oo )4", vm0, flop_amount);
     run_test_process("( [o]2 Xo )4", pm4, flop_amount);
     run_test_process("( [o]2 oX )4", pm4, flop_amount);
@@ -445,7 +445,7 @@ static void run_test(const std::string& chooser)
 
   } else if (chooser == "( [oo]2 oo )4") {
     XBT_INFO("### Put a VM on a PM, and put two tasks to the PM and two tasks to the VM");
-    vm0 = new simgrid::s4u::VirtualMachine("VM0", pm4, 2);
+    vm0 = pm4->create_vm("VM0", 2);
     run_test_process("( [Xo]2 oo )4", vm0, flop_amount);
     run_test_process("( [oX]2 oo )4", vm0, flop_amount);
     run_test_process("( [oo]2 Xo )4", pm4, flop_amount);
@@ -456,7 +456,7 @@ static void run_test(const std::string& chooser)
 
   } else if (chooser == "( [o]2 ooo )4") {
     XBT_INFO("### Put a VM on a PM, and put three tasks to the PM and one tasks to the VM");
-    vm0 = new simgrid::s4u::VirtualMachine("VM0", pm4, 2);
+    vm0 = pm4->create_vm("VM0", 2);
     run_test_process("( [X]2 ooo )4", vm0, flop_amount);
     run_test_process("( [o]2 Xoo )4", pm4, flop_amount);
     run_test_process("( [o]2 oXo )4", pm4, flop_amount);
@@ -467,7 +467,7 @@ static void run_test(const std::string& chooser)
 
   } else if (chooser == "( [oo]2 ooo )4") {
     XBT_INFO("### Put a VM on a PM, and put three tasks to the PM and two tasks to the VM");
-    vm0 = new simgrid::s4u::VirtualMachine("VM0", pm4, 2);
+    vm0 = pm4->create_vm("VM0", 2);
     run_test_process("( [Xo]2 ooo )4", vm0, flop_amount * 4 / 5);
     run_test_process("( [oX]2 ooo )4", vm0, flop_amount * 4 / 5);
     run_test_process("( [oo]2 Xoo )4", pm4, flop_amount * 4 / 5);
@@ -479,7 +479,7 @@ static void run_test(const std::string& chooser)
 
   } else if (chooser == "( [ooo]2 ooo )4") {
     XBT_INFO("### Put a VM on a PM, and put three tasks to the PM and three tasks to the VM");
-    vm0 = new simgrid::s4u::VirtualMachine("VM0", pm4, 2);
+    vm0 = pm4->create_vm("VM0", 2);
     run_test_process("( [Xoo]2 ooo )4", vm0, (flop_amount * 8 / 5) / 3); // The VM has 8/5 of the PM
     run_test_process("( [oXo]2 ooo )4", vm0, (flop_amount * 8 / 5) / 3);
     run_test_process("( [ooX]2 ooo )4", vm0, (flop_amount * 8 / 5) / 3);
index 7a7c206..fc01cab 100644 (file)
@@ -29,7 +29,7 @@ static void master_main()
   simgrid::s4u::Host* pm0 = simgrid::s4u::Host::by_name("Fafard");
   simgrid::s4u::Host* pm1 = simgrid::s4u::Host::by_name("Tremblay");
 
-  auto* vm0 = new simgrid::s4u::VirtualMachine("VM0", pm0, 1);
+  auto* vm0 = pm0->create_vm("VM0", 1);
   vm0->set_ramsize(1e9); // 1Gbytes
   vm0->start();
 
index 9e38bce..3b8efac 100644 (file)
@@ -34,7 +34,7 @@ static void computation_fun()
 static void master_main()
 {
   auto* pm0 = simgrid::s4u::Host::by_name("Fafard");
-  auto* vm0 = new simgrid::s4u::VirtualMachine("VM0", pm0, 1);
+  auto* vm0 = pm0->create_vm("VM0", 1);
   vm0->start();
 
   simgrid::s4u::Actor::create("compute", vm0, computation_fun);
index 62516db..8e0fa5a 100644 (file)
@@ -124,7 +124,7 @@ static void test_launcher(int test_number)
       XBT_INFO("Test 6: Turn on Jupiter, assign a VM on Jupiter, launch an actor inside the VM, and turn off the node");
 
       // Create VM0
-      vm0 = new simgrid::s4u::VirtualMachine("vm0", jupiter, 1);
+      vm0 = jupiter->create_vm("vm0", 1);
       vm0->start();
 
       daemon = simgrid::s4u::Actor::create("actor_daemon", vm0, actor_daemon);
index 14bd189..11fd36a 100644 (file)
@@ -37,7 +37,7 @@ int main(int argc, char* argv[])
 
   e.load_platform(argv[1]);
   auto* pm = e.host_by_name("host1");
-  auto* vm = new simgrid::s4u::VirtualMachine("VM0", pm, 1 /*nCores*/);
+  auto* vm = pm->create_vm("VM0", 1 /*nCores*/);
   vm->set_ramsize(1250000000)->start();
   simgrid::s4u::Actor::create("executor", vm, task_executor);
 
index cce8170..8d30844 100644 (file)
@@ -66,7 +66,7 @@ static void life_cycle_manager()
 static void master(const std::vector<simgrid::s4u::Host*>& hosts)
 {
   for (int i = 1; i <= 2; i++) {
-    auto* vm = new simgrid::s4u::VirtualMachine("test_vm", hosts.at(i), 4);
+    auto* vm = hosts.at(i)->create_vm("test_vm", 4);
     vm->start();
     simgrid::s4u::Actor::create("life_cycle_manager-" + std::to_string(i), vm, life_cycle_manager);