// 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. */
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 */
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);
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);
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);
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);
/* 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);
}