Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
snake_case VirtualMachineImpl
authorFrederic Suter <frederic.suter@cc.in2p3.fr>
Fri, 8 Jun 2018 08:36:15 +0000 (10:36 +0200)
committerFrederic Suter <frederic.suter@cc.in2p3.fr>
Fri, 8 Jun 2018 08:44:35 +0000 (10:44 +0200)
src/plugins/dirty_page_tracking.cpp
src/plugins/vm/VirtualMachineImpl.cpp
src/plugins/vm/VirtualMachineImpl.hpp
src/plugins/vm/VmLiveMigration.cpp
src/plugins/vm/s4u_VirtualMachine.cpp
src/surf/HostImpl.cpp

index 33b784c..904b52f 100644 (file)
@@ -105,7 +105,7 @@ void sg_vm_dirty_page_tracking_init()
   if (not simgrid::vm::VmDirtyPageTrackingExt::EXTENSION_ID.valid()) {
     simgrid::vm::VmDirtyPageTrackingExt::EXTENSION_ID =
         simgrid::vm::VirtualMachineImpl::extension_create<simgrid::vm::VmDirtyPageTrackingExt>();
-    simgrid::vm::VirtualMachineImpl::onVmCreation.connect(&onVirtualMachineCreation);
+    simgrid::vm::VirtualMachineImpl::on_creation.connect(&onVirtualMachineCreation);
     simgrid::kernel::activity::ExecImpl::onCreation.connect(&onExecCreation);
     simgrid::kernel::activity::ExecImpl::onCompletion.connect(&onExecCompletion);
   }
index 350e3f4..07bb169 100644 (file)
@@ -21,17 +21,14 @@ void surf_vm_model_init_HL13()
   }
 }
 
-
+namespace simgrid {
+namespace vm {
 /*************
  * Callbacks *
  *************/
-
-simgrid::xbt::signal<void(simgrid::vm::VirtualMachineImpl*)> simgrid::vm::VirtualMachineImpl::onVmCreation;
-simgrid::xbt::signal<void(simgrid::vm::VirtualMachineImpl*)> simgrid::vm::VirtualMachineImpl::onVmDestruction;
-simgrid::xbt::signal<void(simgrid::vm::VirtualMachineImpl*)> simgrid::vm::VirtualMachineImpl::onVmStateChange;
-
-namespace simgrid {
-namespace vm {
+simgrid::xbt::signal<void(VirtualMachineImpl*)> VirtualMachineImpl::on_creation;
+simgrid::xbt::signal<void(VirtualMachineImpl*)> VirtualMachineImpl::on_destruction;
+simgrid::xbt::signal<void(VirtualMachineImpl*)> VirtualMachineImpl::on_state_change;
 /*********
  * Model *
  *********/
@@ -56,6 +53,7 @@ static void hostStateChange(s4u::Host& host)
       vm->shutdown();
   }
 }
+
 VMModel::VMModel()
 {
   s4u::Host::on_state_change.connect(hostStateChange);
@@ -113,24 +111,24 @@ double VMModel::next_occuring_event(double now)
  ************/
 
 VirtualMachineImpl::VirtualMachineImpl(simgrid::s4u::VirtualMachine* piface, simgrid::s4u::Host* host_PM,
-                                       int coreAmount, size_t ramsize)
-    : HostImpl(piface), hostPM_(host_PM), coreAmount_(coreAmount), ramsize_(ramsize)
+                                       int core_amount, size_t ramsize)
+    : HostImpl(piface), physical_host_(host_PM), core_amount_(core_amount), ramsize_(ramsize)
 {
   /* Register this VM to the list of all VMs */
   allVms_.push_back(piface);
 
   /* We create cpu_action corresponding to a VM process on the host operating system. */
   /* TODO: we have to periodically input GUESTOS_NOISE to the system? how ? */
-  action_ = host_PM->pimpl_cpu->execution_start(0, coreAmount);
+  action_ = host_PM->pimpl_cpu->execution_start(0, core_amount);
 
-  XBT_VERB("Create VM(%s)@PM(%s)", piface->get_cname(), hostPM_->get_cname());
-  onVmCreation(this);
+  XBT_VERB("Create VM(%s)@PM(%s)", piface->get_cname(), physical_host_->get_cname());
+  on_creation(this);
 }
 
 /** @brief A physical host does not disappear in the current SimGrid code, but a VM may disappear during a simulation */
 VirtualMachineImpl::~VirtualMachineImpl()
 {
-  onVmDestruction(this);
+  on_destruction(this);
   /* I was already removed from the allVms set if the VM was destroyed cleanly */
   auto iter = find(allVms_.begin(), allVms_.end(), piface_);
   if (iter != allVms_.end())
@@ -141,19 +139,9 @@ VirtualMachineImpl::~VirtualMachineImpl()
   xbt_assert(ret == 1, "Bug: some resource still remains");
 }
 
-e_surf_vm_state_t VirtualMachineImpl::getState()
-{
-  return vmState_;
-}
-
-void VirtualMachineImpl::setState(e_surf_vm_state_t state)
-{
-  vmState_ = state;
-}
-
 void VirtualMachineImpl::suspend(smx_actor_t issuer)
 {
-  if (getState() != SURF_VM_STATE_RUNNING)
+  if (get_state() != SURF_VM_STATE_RUNNING)
     THROWF(vm_error, 0, "Cannot suspend VM %s: it is not running.", piface_->get_cname());
   if (issuer->host == piface_)
     THROWF(vm_error, 0, "Actor %s cannot suspend the VM %s in which it runs", issuer->get_cname(),
@@ -171,12 +159,12 @@ void VirtualMachineImpl::suspend(smx_actor_t issuer)
 
   XBT_DEBUG("suspend all processes on the VM done done");
 
-  vmState_ = SURF_VM_STATE_SUSPENDED;
+  vm_state_ = SURF_VM_STATE_SUSPENDED;
 }
 
 void VirtualMachineImpl::resume()
 {
-  if (getState() != SURF_VM_STATE_SUSPENDED)
+  if (get_state() != SURF_VM_STATE_SUSPENDED)
     THROWF(vm_error, 0, "Cannot resume VM %s: it was not suspended", piface_->get_cname());
 
   auto& process_list = piface_->extension<simgrid::simix::Host>()->process_list;
@@ -189,7 +177,7 @@ void VirtualMachineImpl::resume()
     smx_process.resume();
   }
 
-  vmState_ = SURF_VM_STATE_RUNNING;
+  vm_state_ = SURF_VM_STATE_RUNNING;
 }
 
 /** @brief Power off a VM.
@@ -201,9 +189,9 @@ void VirtualMachineImpl::resume()
  */
 void VirtualMachineImpl::shutdown(smx_actor_t issuer)
 {
-  if (getState() != SURF_VM_STATE_RUNNING) {
+  if (get_state() != SURF_VM_STATE_RUNNING) {
     const char* stateName = "(unknown state)";
-    switch (getState()) {
+    switch (get_state()) {
       case SURF_VM_STATE_CREATED:
         stateName = "created, but not yet started";
         break;
@@ -229,36 +217,30 @@ void VirtualMachineImpl::shutdown(smx_actor_t issuer)
     SIMIX_process_kill(&smx_process, issuer);
   }
 
-  setState(SURF_VM_STATE_DESTROYED);
+  set_state(SURF_VM_STATE_DESTROYED);
 
   /* FIXME: we may have to do something at the surf layer, e.g., vcpu action */
 }
 
-/** @brief returns the physical machine on which the VM is running **/
-s4u::Host* VirtualMachineImpl::getPm()
-{
-  return hostPM_;
-}
-
 /** @brief Change the physical host on which the given VM is running
  *
  * This is an instantaneous migration.
  */
-void VirtualMachineImpl::setPm(s4u::Host* destination)
+void VirtualMachineImpl::set_physical_host(s4u::Host* destination)
 {
   const char* vm_name     = piface_->get_cname();
-  const char* pm_name_src = hostPM_->get_cname();
+  const char* pm_name_src = physical_host_->get_cname();
   const char* pm_name_dst = destination->get_cname();
 
   /* update net_elm with that of the destination physical host */
   piface_->pimpl_netpoint = destination->pimpl_netpoint;
 
-  hostPM_ = destination;
+  physical_host_ = destination;
 
   /* Update vcpu's action for the new pm */
   /* create a cpu action bound to the pm model at the destination. */
   surf::CpuAction* new_cpu_action =
-      static_cast<surf::CpuAction*>(destination->pimpl_cpu->execution_start(0, this->coreAmount_));
+      static_cast<surf::CpuAction*>(destination->pimpl_cpu->execution_start(0, this->core_amount_));
 
   if (action_->get_remains_no_update() > 0)
     XBT_CRITICAL("FIXME: need copy the state(?), %f", action_->get_remains_no_update());
@@ -270,15 +252,14 @@ void VirtualMachineImpl::setPm(s4u::Host* destination)
     new_cpu_action->set_bound(old_bound);
   }
 
-  XBT_ATTRIB_UNUSED int ret = action_->unref();
-  xbt_assert(ret == 1, "Bug: some resource still remains");
+  xbt_assert(action_->unref() == 1, "Bug: some resource still remains");
 
   action_ = new_cpu_action;
 
   XBT_DEBUG("migrate VM(%s): change PM (%s to %s)", vm_name, pm_name_src, pm_name_dst);
 }
 
-void VirtualMachineImpl::setBound(double bound)
+void VirtualMachineImpl::set_bound(double bound)
 {
   action_->set_bound(bound);
 }
index 362409a..3db713d 100644 (file)
@@ -31,61 +31,45 @@ class XBT_PUBLIC VirtualMachineImpl : public surf::HostImpl, public simgrid::xbt
   friend simgrid::s4u::VirtualMachine;
 
 public:
-  explicit VirtualMachineImpl(s4u::VirtualMachine * piface, s4u::Host * host, int coreAmount, size_t ramsize);
+  explicit VirtualMachineImpl(s4u::VirtualMachine* piface, s4u::Host* host, int core_amount, size_t ramsize);
   ~VirtualMachineImpl();
 
-  /** @brief Suspend the VM */
-  virtual void suspend(simgrid::kernel::actor::ActorImpl* issuer);
+  /** @brief Callbacks fired after VM creation. Signature: `void(VirtualMachineImpl*)` */
+  static xbt::signal<void(simgrid::vm::VirtualMachineImpl*)> on_creation;
+  /** @brief Callbacks fired after VM destruction. Signature: `void(VirtualMachineImpl*)` */
+  static xbt::signal<void(simgrid::vm::VirtualMachineImpl*)> on_destruction;
+  /** @brief Callbacks after VM State changes. Signature: `void(VirtualMachineImpl*)` */
+  static xbt::signal<void(simgrid::vm::VirtualMachineImpl*)> on_state_change;
 
-  /** @brief Resume the VM */
+  virtual void suspend(kernel::actor::ActorImpl* issuer);
   virtual void resume();
-
-  /** @brief Shutdown the VM */
-  virtual void shutdown(simgrid::kernel::actor::ActorImpl* issuer);
+  virtual void shutdown(kernel::actor::ActorImpl* issuer);
 
   /** @brief Change the physical host on which the given VM is running */
-  virtual void setPm(s4u::Host* dest);
+  virtual void set_physical_host(s4u::Host* dest);
+  /** @brief Get the physical host on which the given VM is running */
+  s4u::Host* get_physical_host() { return physical_host_; }
+
+  sg_size_t get_ramsize() { return ramsize_; }
+  void set_ramsize(sg_size_t ramsize) { ramsize_ = ramsize; }
 
-  /** @brief Get the physical machine hosting the VM */
-  s4u::Host* getPm();
+  e_surf_vm_state_t get_state() { return vm_state_; }
+  void set_state(e_surf_vm_state_t state) { vm_state_ = state; }
 
-  sg_size_t getRamsize() { return ramsize_; }
-  void setRamsize(sg_size_t ramsize) { ramsize_ = ramsize; }
+  int get_core_amount() { return core_amount_; }
 
-  virtual void setBound(double bound);
+  virtual void set_bound(double bound);
 
   /* The vm object of the lower layer */
   kernel::resource::Action* action_ = nullptr;
-
-  e_surf_vm_state_t getState();
-  void setState(e_surf_vm_state_t state);
   static std::deque<s4u::VirtualMachine*> allVms_;
-  int coreAmount() { return coreAmount_; }
-
-  bool isMigrating = false;
-  /*************
-   * Callbacks *
-   *************/
-  /** @ingroup SURF_callbacks
-   * @brief Callbacks fired after VM creation. Signature: `void(VirtualMachine*)`
-   */
-  static simgrid::xbt::signal<void(simgrid::vm::VirtualMachineImpl*)> onVmCreation;
-
-  /** @ingroup SURF_callbacks
-   * @brief Callbacks fired after VM destruction. Signature: `void(VirtualMachine*)`
-   */
-  static simgrid::xbt::signal<void(simgrid::vm::VirtualMachineImpl*)> onVmDestruction;
-
-  /** @ingroup SURF_callbacks
-   * @brief Callbacks after VM State changes. Signature: `void(VirtualMachine*)`
-   */
-  static simgrid::xbt::signal<void(simgrid::vm::VirtualMachineImpl*)> onVmStateChange;
+  bool is_migrating_ = false;
 
 private:
-  simgrid::s4u::Host* hostPM_;
-  int coreAmount_;
+  s4u::Host* physical_host_;
+  int core_amount_;
   size_t ramsize_            = 0;
-  e_surf_vm_state_t vmState_ = SURF_VM_STATE_CREATED;
+  e_surf_vm_state_t vm_state_ = SURF_VM_STATE_CREATED;
 };
 
 /*********
index c6b7760..bd1f00d 100644 (file)
@@ -50,7 +50,7 @@ void MigrationRx::operator()()
   vm_->resume();
 
   // Now the VM is running on the new host (the migration is completed) (even if the SRC crash)
-  vm_->getImpl()->isMigrating = false;
+  vm_->getImpl()->is_migrating_ = false;
   XBT_DEBUG("VM(%s) moved from PM(%s) to PM(%s)", vm_->get_cname(), src_pm_->get_cname(), dst_pm_->get_cname());
 
   if (TRACE_vm_is_enabled()) {
@@ -285,11 +285,11 @@ void MigrationTx::operator()()
 
 static void onVirtualMachineShutdown(simgrid::s4u::VirtualMachine& vm)
 {
-  if (vm.getImpl()->isMigrating) {
+  if (vm.getImpl()->is_migrating_) {
     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;
+    vm.getImpl()->is_migrating_ = false;
   }
 }
 
@@ -326,7 +326,7 @@ simgrid::s4u::VirtualMachine* sg_vm_create_migratable(simgrid::s4u::Host* pm, co
 
 int sg_vm_is_migrating(simgrid::s4u::VirtualMachine* vm)
 {
-  return vm->getImpl()->isMigrating;
+  return vm->getImpl()->is_migrating_;
 }
 
 void sg_vm_migrate(simgrid::s4u::VirtualMachine* vm, simgrid::s4u::Host* dst_pm)
@@ -340,10 +340,10 @@ void sg_vm_migrate(simgrid::s4u::VirtualMachine* vm, simgrid::s4u::Host* dst_pm)
     THROWF(vm_error, 0, "Cannot migrate VM '%s' to host '%s', which is offline.", vm->get_cname(), dst_pm->get_cname());
   if (vm->getState() != SURF_VM_STATE_RUNNING)
     THROWF(vm_error, 0, "Cannot migrate VM '%s' that is not running yet.", vm->get_cname());
-  if (vm->getImpl()->isMigrating)
+  if (vm->getImpl()->is_migrating_)
     THROWF(vm_error, 0, "Cannot migrate VM '%s' that is already migrating.", vm->get_cname());
 
-  vm->getImpl()->isMigrating = true;
+  vm->getImpl()->is_migrating_ = true;
 
   std::string rx_name =
       std::string("__pr_mig_rx:") + vm->get_cname() + "(" + src_pm->get_cname() + "-" + dst_pm->get_cname() + ")";
@@ -365,5 +365,5 @@ void sg_vm_migrate(simgrid::s4u::VirtualMachine* vm, simgrid::s4u::Host* dst_pm)
   tx->join();
   rx->join();
 
-  vm->getImpl()->isMigrating = false;
+  vm->getImpl()->is_migrating_ = false;
 }
index af76685..9037014 100644 (file)
@@ -72,7 +72,7 @@ void VirtualMachine::start()
   simgrid::simix::simcall([this]() {
     simgrid::vm::VmHostExt::ensureVmExtInstalled();
 
-    simgrid::s4u::Host* pm = this->pimpl_vm_->getPm();
+    simgrid::s4u::Host* pm = this->pimpl_vm_->get_physical_host();
     if (pm->extension<simgrid::vm::VmHostExt>() == nullptr)
       pm->extension_set(new simgrid::vm::VmHostExt());
 
@@ -95,7 +95,7 @@ void VirtualMachine::start()
       }
     }
 
-    this->pimpl_vm_->setState(SURF_VM_STATE_RUNNING);
+    this->pimpl_vm_->set_state(SURF_VM_STATE_RUNNING);
   });
 
   on_started(*this);
@@ -132,27 +132,27 @@ void VirtualMachine::destroy()
 
 simgrid::s4u::Host* VirtualMachine::getPm()
 {
-  return pimpl_vm_->getPm();
+  return pimpl_vm_->get_physical_host();
 }
 
 void VirtualMachine::setPm(simgrid::s4u::Host* pm)
 {
-  simgrid::simix::simcall([this, pm]() { pimpl_vm_->setPm(pm); });
+  simgrid::simix::simcall([this, pm]() { pimpl_vm_->set_physical_host(pm); });
 }
 
 e_surf_vm_state_t VirtualMachine::getState()
 {
-  return simgrid::simix::simcall([this]() { return pimpl_vm_->getState(); });
+  return simgrid::simix::simcall([this]() { return pimpl_vm_->get_state(); });
 }
 
 size_t VirtualMachine::getRamsize()
 {
-  return pimpl_vm_->getRamsize();
+  return pimpl_vm_->get_ramsize();
 }
 
 void VirtualMachine::setRamsize(size_t ramsize)
 {
-  pimpl_vm_->setRamsize(ramsize);
+  pimpl_vm_->set_ramsize(ramsize);
 }
 /** @brief Set a CPU bound for a given VM.
  *  @ingroup msg_VMs
@@ -182,7 +182,7 @@ void VirtualMachine::setRamsize(size_t ramsize)
  */
 void VirtualMachine::setBound(double bound)
 {
-  simgrid::simix::simcall([this, bound]() { pimpl_vm_->setBound(bound); });
+  simgrid::simix::simcall([this, bound]() { pimpl_vm_->set_bound(bound); });
 }
 
 } // namespace simgrid
index f4c07b3..5623d6b 100644 (file)
@@ -32,7 +32,7 @@ void HostModel::ignore_empty_vm_in_pm_LMM()
     int active_tasks = cpu->get_constraint()->get_variable_amount();
 
     /* The impact of the VM over its PM is the min between its vCPU amount and the amount of tasks it contains */
-    int impact = std::min(active_tasks, ws_vm->getImpl()->coreAmount());
+    int impact = std::min(active_tasks, ws_vm->getImpl()->get_core_amount());
 
     XBT_DEBUG("set the weight of the dummy CPU action of VM%p on PM to %d (#tasks: %d)", ws_vm, impact, active_tasks);
     if (impact > 0)