/* 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. */
/* 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. */
std::string("__mig_stage3:") + vm_->get_cname() + "(" + src_pm_->get_cname() + "-" + dst_pm_->get_cname() + ")";
while (not received_finalize) {
std::string("__mig_stage3:") + vm_->get_cname() + "(" + src_pm_->get_cname() + "-" + dst_pm_->get_cname() + ")";
while (not received_finalize) {
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()) {
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()) {
- container_t msg = simgrid::instr::Container::by_name(vm_->get_name());
- simgrid::instr::Container::get_root()->get_link("VM_LINK")->start_event(msg, "M", key);
+ container_t msg = instr::Container::by_name(vm_->get_name());
+ instr::Container::get_root()->get_link("VM_LINK")->start_event(msg, "M", key);
- new simgrid::instr::Container(vm_->get_name(), "VM", simgrid::instr::Container::by_name(dst_pm_->get_name()));
+ new instr::Container(vm_->get_name(), "VM", instr::Container::by_name(dst_pm_->get_name()));
- msg = simgrid::instr::Container::by_name(vm_->get_name());
- simgrid::instr::Container::get_root()->get_link("VM_LINK")->end_event(msg, "M", key);
+ msg = instr::Container::by_name(vm_->get_name());
+ instr::Container::get_root()->get_link("VM_LINK")->end_event(msg, "M", key);
}
// Inform the SRC that the migration has been correctly performed
std::string* payload = new std::string("__mig_stage4:");
}
// Inform the SRC that the migration has been correctly performed
std::string* payload = new std::string("__mig_stage4:");
} catch (const Exception&) {
// hostfailure (if you want to know whether this is the SRC or the DST check directly in send_migration_data code)
// Stop the dirty page tracking an return (there is no memory space to release)
} catch (const Exception&) {
// hostfailure (if you want to know whether this is the SRC or the DST check directly in send_migration_data code)
// Stop the dirty page tracking an return (there is no memory space to release)
int stage2_round = 0;
/* just after stage1, nothing has been updated. But, we have to send the data updated during stage1 */
sg_size_t updated_size = get_updated_size(computed_during_stage1, dp_rate, dp_cap);
int stage2_round = 0;
/* just after stage1, nothing has been updated. But, we have to send the data updated during stage1 */
sg_size_t updated_size = get_updated_size(computed_during_stage1, dp_rate, dp_cap);
/* When the remaining size is below the threshold value, move to stage 3. */
while (threshold < remaining_size) {
/* When the remaining size is below the threshold value, move to stage 3. */
while (threshold < remaining_size) {
XBT_DEBUG("mig-stage 2:%d updated_size %llu computed_during_stage1 %f dp_rate %f dp_cap %llu", stage2_round,
updated_size, computed_during_stage1, dp_rate, dp_cap);
XBT_DEBUG("mig-stage 2:%d updated_size %llu computed_during_stage1 %f dp_rate %f dp_cap %llu", stage2_round,
updated_size, computed_during_stage1, dp_rate, dp_cap);
vm.extension<simgrid::vm::VmMigrationExt>()->rx_->kill();
vm.extension<simgrid::vm::VmMigrationExt>()->tx_->kill();
vm.extension<simgrid::vm::VmMigrationExt>()->issuer_->kill();
vm.extension<simgrid::vm::VmMigrationExt>()->rx_->kill();
vm.extension<simgrid::vm::VmMigrationExt>()->tx_->kill();
vm.extension<simgrid::vm::VmMigrationExt>()->issuer_->kill();
throw simgrid::VmFailureException(
XBT_THROW_POINT,
simgrid::xbt::string_printf("Cannot migrate VM '%s' that is not running yet.", vm->get_cname()));
throw simgrid::VmFailureException(
XBT_THROW_POINT,
simgrid::xbt::string_printf("Cannot migrate VM '%s' that is not running yet.", vm->get_cname()));
throw simgrid::VmFailureException(
XBT_THROW_POINT,
simgrid::xbt::string_printf("Cannot migrate VM '%s' that is already migrating.", vm->get_cname()));
throw simgrid::VmFailureException(
XBT_THROW_POINT,
simgrid::xbt::string_printf("Cannot migrate VM '%s' that is already migrating.", vm->get_cname()));