Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Move collective algorithms to separate folders
[simgrid.git] / src / plugins / vm / VirtualMachineImpl.cpp
index 5bd81fd..356403d 100644 (file)
@@ -78,9 +78,9 @@ double VMModel::nextOccuringEvent(double now)
 
     // TODO: check lmm_update_constraint_bound() works fine instead of the below manual substitution.
     // cpu_cas01->constraint->bound = solved_value;
-    xbt_assert(cpu->getModel() == surf_cpu_model_vm);
-    lmm_system_t vcpu_system = cpu->getModel()->getMaxminSystem();
-    lmm_update_constraint_bound(vcpu_system, cpu->getConstraint(), virt_overhead * solved_value);
+    xbt_assert(cpu->model() == surf_cpu_model_vm);
+    lmm_system_t vcpu_system = cpu->model()->getMaxminSystem();
+    lmm_update_constraint_bound(vcpu_system, cpu->constraint(), virt_overhead * solved_value);
   }
 
   /* 2. Calculate resource share at the virtual machine layer. */
@@ -101,7 +101,7 @@ VirtualMachineImpl::VirtualMachineImpl(simgrid::s4u::VirtualMachine* piface, sim
   allVms_.push_back(piface);
 
   /* We create cpu_action corresponding to a VM process on the host operating system. */
-  /* FIXME: TODO: we have to periodically input GUESTOS_NOISE to the system? how ? */
+  /* TODO: we have to periodically input GUESTOS_NOISE to the system? how ? */
   action_ = host_PM->pimpl_cpu->execution_start(0);
 
   /* Initialize the VM parameters */
@@ -116,7 +116,10 @@ extern "C" int
 VirtualMachineImpl::~VirtualMachineImpl()
 {
   onVmDestruction(this);
-  allVms_.erase(find(allVms_.begin(), allVms_.end(), piface_));
+  /* 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())
+    allVms_.erase(iter);
 
   /* dirty page tracking */
   unsigned int size          = xbt_dict_size(dp_objs);
@@ -163,7 +166,8 @@ void VirtualMachineImpl::suspend(smx_actor_t issuer)
 
   action_->suspend();
 
-  smx_actor_t smx_process, smx_process_safe;
+  smx_actor_t smx_process;
+  smx_actor_t smx_process_safe;
   xbt_swag_foreach_safe(smx_process, smx_process_safe, process_list) {
     XBT_DEBUG("suspend %s", smx_process->name.c_str());
     SIMIX_process_suspend(smx_process, issuer);
@@ -184,7 +188,8 @@ void VirtualMachineImpl::resume()
 
   action_->resume();
 
-  smx_actor_t smx_process, smx_process_safe;
+  smx_actor_t smx_process;
+  smx_actor_t smx_process_safe;
   xbt_swag_foreach_safe(smx_process, smx_process_safe, process_list) {
     XBT_DEBUG("resume %s", smx_process->cname());
     SIMIX_process_resume(smx_process);
@@ -208,7 +213,8 @@ void VirtualMachineImpl::shutdown(smx_actor_t issuer)
   xbt_swag_t process_list = piface_->extension<simgrid::simix::Host>()->process_list;
   XBT_DEBUG("shutdown VM %s, that contains %d processes", piface_->cname(), xbt_swag_size(process_list));
 
-  smx_actor_t smx_process, smx_process_safe;
+  smx_actor_t smx_process;
+  smx_actor_t smx_process_safe;
   xbt_swag_foreach_safe(smx_process, smx_process_safe, process_list) {
     XBT_DEBUG("kill %s", smx_process->cname());
     SIMIX_process_kill(smx_process, issuer);
@@ -252,7 +258,7 @@ void VirtualMachineImpl::setPm(s4u::Host* destination)
 
   /* keep the bound value of the cpu action of the VM. */
   double old_bound = action_->getBound();
-  if (old_bound != 0) {
+  if (old_bound > 0) {
     XBT_DEBUG("migrate VM(%s): set bound (%f) at %s", vm_name, old_bound, pm_name_dst);
     new_cpu_action->setBound(old_bound);
   }