From: SUTER Frederic Date: Wed, 27 Oct 2021 10:59:02 +0000 (+0200) Subject: Change the way VMs are created. X-Git-Tag: v3.30~296 X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/d83142e8e1b7e87719cb05ff96b4108ca7138f36 Change the way VMs are created. Instead of explicitly calling the ctor with new, use the physical host as a factory thanks to the new Host::create_vm() method. --- diff --git a/examples/cpp/cloud-capping/s4u-cloud-capping.cpp b/examples/cpp/cloud-capping/s4u-cloud-capping.cpp index b09100122a..02bbafde29 100644 --- a/examples/cpp/cloud-capping/s4u-cloud-capping.cpp +++ b/examples/cpp/cloud-capping/s4u-cloud-capping.cpp @@ -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(); diff --git a/examples/cpp/cloud-migration/s4u-cloud-migration.cpp b/examples/cpp/cloud-migration/s4u-cloud-migration.cpp index 7519fce165..f58fc6db6a 100644 --- a/examples/cpp/cloud-migration/s4u-cloud-migration.cpp +++ b/examples/cpp/cloud-migration/s4u-cloud-migration.cpp @@ -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 diff --git a/examples/cpp/cloud-simple/s4u-cloud-simple.cpp b/examples/cpp/cloud-simple/s4u-cloud-simple.cpp index 6ef3e2cafa..e9e6e34663 100644 --- a/examples/cpp/cloud-simple/s4u-cloud-simple.cpp +++ b/examples/cpp/cloud-simple/s4u-cloud-simple.cpp @@ -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(); diff --git a/examples/cpp/energy-vm/s4u-energy-vm.cpp b/examples/cpp/energy-vm/s4u-energy-vm.cpp index 872274bb83..8137b85a62 100644 --- a/examples/cpp/energy-vm/s4u-energy-vm.cpp +++ b/examples/cpp/energy-vm/s4u-energy-vm.cpp @@ -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"); diff --git a/include/simgrid/s4u/Host.hpp b/include/simgrid/s4u/Host.hpp index 2537303359..b3b18211ce 100644 --- a/include/simgrid/s4u/Host.hpp +++ b/include/simgrid/s4u/Host.hpp @@ -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& links, double* latency) const; void route_to(const Host* dest, std::vector& links, double* latency) const; diff --git a/src/plugins/vm/VmLiveMigration.cpp b/src/plugins/vm/VmLiveMigration.cpp index 81c554e135..6f7413d2f4 100644 --- a/src/plugins/vm/VmLiveMigration.cpp +++ b/src/plugins/vm/VmLiveMigration.cpp @@ -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(ramsize) * 1024 * 1024); + auto* vm = pm->create_vm(name, coreAmount, static_cast(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); diff --git a/src/plugins/vm/s4u_VirtualMachine.cpp b/src/plugins/vm/s4u_VirtualMachine.cpp index a317f754df..028583263e 100644 --- a/src/plugins/vm/s4u_VirtualMachine.cpp +++ b/src/plugins/vm/s4u_VirtualMachine.cpp @@ -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) diff --git a/src/s4u/s4u_Host.cpp b/src/s4u/s4u_Host.cpp index 06972212e9..12ce201b06 100644 --- a/src/s4u/s4u_Host.cpp +++ b/src/s4u/s4u_Host.cpp @@ -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); diff --git a/teshsuite/models/cloud-sharing/cloud-sharing.cpp b/teshsuite/models/cloud-sharing/cloud-sharing.cpp index 5e8cb75ec0..4283ab243f 100644 --- a/teshsuite/models/cloud-sharing/cloud-sharing.cpp +++ b/teshsuite/models/cloud-sharing/cloud-sharing.cpp @@ -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); diff --git a/teshsuite/s4u/cloud-interrupt-migration/cloud-interrupt-migration.cpp b/teshsuite/s4u/cloud-interrupt-migration/cloud-interrupt-migration.cpp index 7a7c206f35..fc01cabd2d 100644 --- a/teshsuite/s4u/cloud-interrupt-migration/cloud-interrupt-migration.cpp +++ b/teshsuite/s4u/cloud-interrupt-migration/cloud-interrupt-migration.cpp @@ -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(); diff --git a/teshsuite/s4u/cloud-two-execs/cloud-two-execs.cpp b/teshsuite/s4u/cloud-two-execs/cloud-two-execs.cpp index 9e38bce058..3b8efac55e 100644 --- a/teshsuite/s4u/cloud-two-execs/cloud-two-execs.cpp +++ b/teshsuite/s4u/cloud-two-execs/cloud-two-execs.cpp @@ -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); diff --git a/teshsuite/s4u/host-on-off-actors/host-on-off-actors.cpp b/teshsuite/s4u/host-on-off-actors/host-on-off-actors.cpp index 62516db724..8e0fa5adc2 100644 --- a/teshsuite/s4u/host-on-off-actors/host-on-off-actors.cpp +++ b/teshsuite/s4u/host-on-off-actors/host-on-off-actors.cpp @@ -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); diff --git a/teshsuite/s4u/vm-live-migration/vm-live-migration.cpp b/teshsuite/s4u/vm-live-migration/vm-live-migration.cpp index 14bd18926a..11fd36ab73 100644 --- a/teshsuite/s4u/vm-live-migration/vm-live-migration.cpp +++ b/teshsuite/s4u/vm-live-migration/vm-live-migration.cpp @@ -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); diff --git a/teshsuite/s4u/vm-suicide/vm-suicide.cpp b/teshsuite/s4u/vm-suicide/vm-suicide.cpp index cce8170266..8d30844bfb 100644 --- a/teshsuite/s4u/vm-suicide/vm-suicide.cpp +++ b/teshsuite/s4u/vm-suicide/vm-suicide.cpp @@ -66,7 +66,7 @@ static void life_cycle_manager() static void master(const std::vector& 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);