X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/2101b1ed8b3c9441270745ec51acb9efc27793ff..8c416e92254512408c1d0ce729e8d3cf82ec9938:/examples/s4u/cloud-simple/s4u-cloud-simple.cpp?ds=sidebyside diff --git a/examples/s4u/cloud-simple/s4u-cloud-simple.cpp b/examples/s4u/cloud-simple/s4u-cloud-simple.cpp index 9de94b40d4..ba2a67d57b 100644 --- a/examples/s4u/cloud-simple/s4u-cloud-simple.cpp +++ b/examples/s4u/cloud-simple/s4u-cloud-simple.cpp @@ -1,10 +1,12 @@ -/* Copyright (c) 2007-2017. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2007-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. */ #include "simgrid/s4u.hpp" +#include "simgrid/plugins/live_migration.h" #include "simgrid/s4u/VirtualMachine.hpp" + XBT_LOG_NEW_DEFAULT_CATEGORY(s4u_test, "Messages specific for this s4u example"); static void computation_fun() @@ -13,13 +15,13 @@ static void computation_fun() simgrid::s4u::this_actor::execute(1000000); double clock_end = simgrid::s4u::Engine::getClock(); - XBT_INFO("%s:%s task executed %g", simgrid::s4u::this_actor::getHost()->getCname(), - simgrid::s4u::this_actor::getCname(), clock_end - clock_sta); + XBT_INFO("%s:%s task executed %g", simgrid::s4u::this_actor::get_host()->get_cname(), + simgrid::s4u::this_actor::get_cname(), clock_end - clock_sta); } static void launch_computation_worker(s4u_Host* host) { - simgrid::s4u::Actor::createActor("compute", host, computation_fun); + simgrid::s4u::Actor::create("compute", host, computation_fun); } struct s_payload { @@ -31,9 +33,9 @@ struct s_payload { static void communication_tx_fun(std::vector args) { simgrid::s4u::MailboxPtr mbox = simgrid::s4u::Mailbox::byName(args.at(0)); - struct s_payload* payload = xbt_new(struct s_payload, 1); - payload->tx_actor_name = simgrid::s4u::Actor::self()->getCname(); - payload->tx_host = simgrid::s4u::this_actor::getHost(); + s_payload* payload = new s_payload; + payload->tx_actor_name = simgrid::s4u::Actor::self()->get_cname(); + payload->tx_host = simgrid::s4u::this_actor::get_host(); payload->clock_sta = simgrid::s4u::Engine::getClock(); mbox->put(payload, 1000000); @@ -41,34 +43,35 @@ static void communication_tx_fun(std::vector args) static void communication_rx_fun(std::vector args) { - const char* actor_name = simgrid::s4u::Actor::self()->getCname(); - const char* host_name = simgrid::s4u::this_actor::getHost()->getCname(); + const char* actor_name = simgrid::s4u::Actor::self()->get_cname(); + const char* host_name = simgrid::s4u::this_actor::get_host()->get_cname(); simgrid::s4u::MailboxPtr mbox = simgrid::s4u::Mailbox::byName(args.at(0)); struct s_payload* payload = static_cast(mbox->get()); double clock_end = simgrid::s4u::Engine::getClock(); - XBT_INFO("%s:%s to %s:%s => %g sec", payload->tx_host->getCname(), payload->tx_actor_name, host_name, actor_name, + XBT_INFO("%s:%s to %s:%s => %g sec", payload->tx_host->get_cname(), payload->tx_actor_name, host_name, actor_name, clock_end - payload->clock_sta); - xbt_free(payload); + delete payload; } static void launch_communication_worker(s4u_Host* tx_host, s4u_Host* rx_host) { - std::string mbox_name = std::string("MBOX:") + tx_host->getCname() + "-" + rx_host->getCname(); + std::string mbox_name = std::string("MBOX:") + tx_host->get_cname() + "-" + rx_host->get_cname(); std::vector args; args.push_back(mbox_name); - simgrid::s4u::Actor::createActor("comm_tx", tx_host, communication_tx_fun, args); + simgrid::s4u::Actor::create("comm_tx", tx_host, communication_tx_fun, args); - simgrid::s4u::Actor::createActor("comm_rx", rx_host, communication_rx_fun, args); + simgrid::s4u::Actor::create("comm_rx", rx_host, communication_rx_fun, args); } static void master_main() { s4u_Host* pm0 = simgrid::s4u::Host::by_name("Fafard"); s4u_Host* pm1 = simgrid::s4u::Host::by_name("Tremblay"); + s4u_Host* pm2 = simgrid::s4u::Host::by_name("Bourassa"); XBT_INFO("## Test 1 (started): check computation on normal PMs"); @@ -186,23 +189,34 @@ static void master_main() vm1->destroy(); XBT_INFO("## Test 5 (ended)"); -} + 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->setRamsize(1L * 1024 * 1024 * 1024); // 1GiB -static void launch_master(s4u_Host* host) -{ - simgrid::s4u::Actor::createActor("master_", host, master_main); + vm0->start(); + launch_communication_worker(vm0, pm2); + simgrid::s4u::this_actor::sleep_for(0.01); + sg_vm_migrate(vm0, pm1); + simgrid::s4u::this_actor::sleep_for(0.01); + sg_vm_migrate(vm0, pm0); + simgrid::s4u::this_actor::sleep_for(5); + vm0->destroy(); + XBT_INFO("## Test 6 (ended)"); } int main(int argc, char* argv[]) { - simgrid::s4u::Engine* e = new simgrid::s4u::Engine(&argc, argv); - e->loadPlatform(argv[1]); /* - Load the platform description */ + simgrid::s4u::Engine e(&argc, argv); + sg_vm_live_migration_plugin_init(); + e.load_platform(argv[1]); /* - Load the platform description */ - launch_master(simgrid::s4u::Host::by_name("Fafard")); + simgrid::s4u::Actor::create("master_", simgrid::s4u::Host::by_name("Fafard"), master_main); - e->run(); + e.run(); - XBT_INFO("Simulation time %g", e->getClock()); + XBT_INFO("Simulation time %g", e.getClock()); return 0; }