Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
use signals to instrument VMs
[simgrid.git] / src / plugins / vm / VmLiveMigration.cpp
index ae70eaf..84001da 100644 (file)
@@ -3,15 +3,11 @@
 /* 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/plugins/live_migration.h>
-#include <simgrid/s4u.hpp>
-#include <simgrid/s4u/VirtualMachine.hpp>
-#include <simgrid/vm.h>
-#include <src/instr/instr_private.hpp>
-#include <src/plugins/vm/VirtualMachineImpl.hpp>
-#include <src/plugins/vm/VmHostExt.hpp>
-#include <src/plugins/vm/VmLiveMigration.hpp>
-#include <xbt/ex.hpp>
+#include "src/plugins/vm/VmLiveMigration.hpp"
+#include "src/instr/instr_private.hpp"
+#include "src/plugins/vm/VirtualMachineImpl.hpp"
+#include "src/plugins/vm/VmHostExt.hpp"
+#include "xbt/ex.hpp"
 
 XBT_LOG_NEW_DEFAULT_CATEGORY(vm_live_migration, "S4U virtual machines live migration");
 
@@ -103,24 +99,24 @@ sg_size_t MigrationTx::sendMigrationData(sg_size_t size, int stage, int stage2_r
   *msg             = *msg + std::to_string(stage) + ":" + vm_->get_cname() + "(" + src_pm_->get_cname() + "-" +
          dst_pm_->get_cname() + ")";
 
-  double clock_sta = s4u::Engine::getClock();
+  double clock_sta = s4u::Engine::get_clock();
 
   s4u::Activity* comm = nullptr;
   try {
     if (mig_speed > 0)
-      comm = mbox->put_init(msg, size)->setRate(mig_speed)->wait(timeout);
+      comm = mbox->put_init(msg, size)->set_rate(mig_speed)->wait(timeout);
     else
       comm = mbox->put_async(msg, size)->wait();
   } catch (xbt_ex& e) {
     if (comm) {
-      sg_size_t remaining = static_cast<sg_size_t>(comm->getRemains());
+      sg_size_t remaining = static_cast<sg_size_t>(comm->get_remaining());
       XBT_VERB("timeout (%lf s) in sending_migration_data, remaining %llu bytes of %llu", timeout, remaining, size);
       sent -= remaining;
     }
     delete msg;
   }
 
-  double clock_end    = s4u::Engine::getClock();
+  double clock_end    = s4u::Engine::get_clock();
   double duration     = clock_end - clock_sta;
   double actual_speed = size / duration;
 
@@ -166,7 +162,7 @@ void MigrationTx::operator()()
   sg_vm_start_dirty_page_tracking(vm_);
 
   double computed_during_stage1 = 0;
-  double clock_prev_send        = s4u::Engine::getClock();
+  double clock_prev_send        = s4u::Engine::get_clock();
 
   try {
     /* At stage 1, we do not need timeout. We have to send all the memory pages even though the duration of this
@@ -189,7 +185,7 @@ void MigrationTx::operator()()
     return;
   }
 
-  double clock_post_send = s4u::Engine::getClock();
+  double clock_post_send = s4u::Engine::get_clock();
   mig_timeout -= (clock_post_send - clock_prev_send);
   if (mig_timeout < 0) {
     XBT_VERB("The duration of stage 1 exceeds the timeout value, skip stage 2");
@@ -226,7 +222,7 @@ void MigrationTx::operator()()
         break;
 
       sg_size_t sent         = 0;
-      double clock_prev_send = s4u::Engine::getClock();
+      double clock_prev_send = s4u::Engine::get_clock();
       try {
         XBT_DEBUG("Stage 2, gonna send %llu", updated_size);
         sent = sendMigrationData(updated_size, 2, stage2_round, mig_speed, mig_timeout);
@@ -237,7 +233,7 @@ void MigrationTx::operator()()
         sg_vm_stop_dirty_page_tracking(vm_);
         return;
       }
-      double clock_post_send = s4u::Engine::getClock();
+      double clock_post_send = s4u::Engine::get_clock();
 
       if (sent == updated_size) {
         /* timeout did not happen */
@@ -287,13 +283,13 @@ void MigrationTx::operator()()
 }
 }
 
-static void onVirtualMachineShutdown(simgrid::s4u::VirtualMachine* vm)
+static void onVirtualMachineShutdown(simgrid::s4u::VirtualMachine& vm)
 {
-  if (vm->getImpl()->isMigrating) {
-    vm->extension<simgrid::vm::VmMigrationExt>()->rx_->kill();
-    vm->extension<simgrid::vm::VmMigrationExt>()->tx_->kill();
-    vm->extension<simgrid::vm::VmMigrationExt>()->issuer_->kill();
-    vm->getImpl()->isMigrating = false;
+  if (vm.getImpl()->isMigrating) {
+    vm.extension<simgrid::vm::VmMigrationExt>()->rx_->kill();
+    vm.extension<simgrid::vm::VmMigrationExt>()->tx_->kill();
+    vm.extension<simgrid::vm::VmMigrationExt>()->issuer_->kill();
+    vm.getImpl()->isMigrating = false;
   }
 }
 
@@ -301,7 +297,7 @@ void sg_vm_live_migration_plugin_init()
 {
   sg_vm_dirty_page_tracking_init();
   simgrid::vm::VmMigrationExt::ensureVmMigrationExtInstalled();
-  simgrid::s4u::VirtualMachine::onVmShutdown.connect(&onVirtualMachineShutdown);
+  simgrid::s4u::VirtualMachine::on_shutdown.connect(&onVirtualMachineShutdown);
 }
 
 /* Deprecated. Please use MSG_vm_create_migratable() instead */
@@ -355,9 +351,9 @@ void sg_vm_migrate(simgrid::s4u::VirtualMachine* vm, simgrid::s4u::Host* dst_pm)
       std::string("__pr_mig_tx:") + vm->get_cname() + "(" + src_pm->get_cname() + "-" + dst_pm->get_cname() + ")";
 
   simgrid::s4u::ActorPtr rx =
-      simgrid::s4u::Actor::createActor(rx_name.c_str(), dst_pm, simgrid::vm::MigrationRx(vm, dst_pm));
+      simgrid::s4u::Actor::create(rx_name.c_str(), dst_pm, simgrid::vm::MigrationRx(vm, dst_pm));
   simgrid::s4u::ActorPtr tx =
-      simgrid::s4u::Actor::createActor(tx_name.c_str(), src_pm, simgrid::vm::MigrationTx(vm, dst_pm));
+      simgrid::s4u::Actor::create(tx_name.c_str(), src_pm, simgrid::vm::MigrationTx(vm, dst_pm));
 
   vm->extension_set<simgrid::vm::VmMigrationExt>(new simgrid::vm::VmMigrationExt(simgrid::s4u::Actor::self(), rx, tx));