Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
isolate VM migration parameters from others
[simgrid.git] / src / msg / msg_vm.cpp
index 00d1d02..06abe65 100644 (file)
@@ -59,6 +59,15 @@ void MSG_vm_get_params(msg_vm_t vm, vm_params_t params)
   vm->getParameters(params);
 }
 
+void MSG_vm_set_ramsize(msg_vm_t vm, size_t size)
+{
+  vm->setRamsize(size);
+}
+size_t MSG_vm_get_ramsize(msg_vm_t vm)
+{
+  return vm->getRamsize();
+}
+
 /* **** Check state of a VM **** */
 static inline int __MSG_vm_is_state(msg_vm_t vm, e_surf_vm_state_t state)
 {
@@ -113,18 +122,15 @@ msg_vm_t MSG_vm_create(msg_host_t pm, const char* name, int coreAmount, int rams
 
   /* For the moment, intensity_rate is the percentage against the migration bandwidth */
 
-  msg_vm_t vm = new simgrid::s4u::VirtualMachine(name, pm, coreAmount);
+  msg_vm_t vm = new simgrid::s4u::VirtualMachine(name, pm, coreAmount, static_cast<sg_size_t>(ramsize) * 1024 * 1024);
   s_vm_params_t params;
-  params.ncpus        = 0;
-  params.ramsize      = static_cast<sg_size_t>(ramsize) * 1024 * 1024;
-  params.overcommit   = 0;
   params.devsize      = 0;
   params.skip_stage1  = 0;
   params.skip_stage2  = 0;
   params.max_downtime = 0.03;
   params.mig_speed    = static_cast<double>(mig_netspeed) * 1024 * 1024; // mig_speed
   params.dp_intensity = static_cast<double>(dp_intensity) / 100;
-  params.dp_cap       = params.ramsize * 0.9; // assume working set memory is 90% of ramsize
+  params.dp_cap       = vm->getRamsize() * 0.9; // assume working set memory is 90% of ramsize
 
   XBT_DEBUG("migspeed : %f intensity mem : %d", params.mig_speed, dp_intensity);
   vm->setParameters(&params);
@@ -142,7 +148,11 @@ msg_vm_t MSG_vm_create_core(msg_host_t pm, const char* name)
   xbt_assert(sg_host_by_name(name) == nullptr,
              "Cannot create a VM named %s: this name is already used by an host or a VM", name);
 
-  return new simgrid::s4u::VirtualMachine(name, pm, 1);
+  msg_vm_t vm = new simgrid::s4u::VirtualMachine(name, pm, 1);
+  s_vm_params_t params;
+  memset(&params, 0, sizeof(params));
+  vm->setParameters(&params);
+  return vm;
 }
 /** @brief Create a new VM object with the default parameters, but with a specified amount of cores
  *  @ingroup msg_VMs*
@@ -154,7 +164,11 @@ msg_vm_t MSG_vm_create_multicore(msg_host_t pm, const char* name, int coreAmount
   xbt_assert(sg_host_by_name(name) == nullptr,
              "Cannot create a VM named %s: this name is already used by an host or a VM", name);
 
-  return new simgrid::s4u::VirtualMachine(name, pm, coreAmount);
+  msg_vm_t vm = new simgrid::s4u::VirtualMachine(name, pm, coreAmount);
+  s_vm_params_t params;
+  memset(&params, 0, sizeof(params));
+  vm->setParameters(&params);
+  return vm;
 }
 
 /** @brief Destroy a VM. Destroy the VM object from the simulation.
@@ -509,7 +523,7 @@ static int migration_tx_fun(int argc, char *argv[])
   double host_speed = ms->vm->pimpl_vm_->getPm()->getSpeed();
   s_vm_params_t params;
   ms->vm->getParameters(&params);
-  const sg_size_t ramsize   = params.ramsize;
+  const sg_size_t ramsize   = ms->vm->getRamsize();
   const sg_size_t devsize   = params.devsize;
   const int skip_stage1     = params.skip_stage1;
   int skip_stage2           = params.skip_stage2;