vm->start();
if (TRACE_msg_vm_is_enabled()) {
container_t vm_container = PJ_container_get(vm->getCname());
- type_t type = PJ_type_get("MSG_VM_STATE", vm_container->type);
- value* val = value::get_or_new("start", "0 0 1", type); // start is blue
- new PushStateEvent(MSG_get_clock(), vm_container, type, val);
+ simgrid::instr::Type* type = PJ_type_get("MSG_VM_STATE", vm_container->type_);
+ simgrid::instr::Value* val = simgrid::instr::Value::get_or_new("start", "0 0 1", type); // start is blue
+ new simgrid::instr::PushStateEvent(MSG_get_clock(), vm_container, type, val);
}
}
static std::string get_mig_process_tx_name(msg_vm_t vm, msg_host_t src_pm, msg_host_t dst_pm)
{
- return std::string("__pr_mig_tx:") + vm->getName() + "(" + src_pm->getName() + "-" + dst_pm->getName() + ")";
+ return std::string("__pr_mig_tx:") + vm->getCname() + "(" + src_pm->getCname() + "-" + dst_pm->getCname() + ")";
}
static std::string get_mig_process_rx_name(msg_vm_t vm, msg_host_t src_pm, msg_host_t dst_pm)
{
- return std::string("__pr_mig_rx:") + vm->getName() + "(" + src_pm->getName() + "-" + dst_pm->getName() + ")";
+ return std::string("__pr_mig_rx:") + vm->getCname() + "(" + src_pm->getCname() + "-" + dst_pm->getCname() + ")";
}
-static inline char *get_mig_task_name(msg_vm_t vm, msg_host_t src_pm, msg_host_t dst_pm, int stage)
+static std::string get_mig_task_name(msg_vm_t vm, msg_host_t src_pm, msg_host_t dst_pm, int stage)
{
- return bprintf("__task_mig_stage%d:%s(%s-%s)", stage, vm->getCname(), src_pm->getCname(), dst_pm->getCname());
+ return std::string("__task_mig_stage") + std::to_string(stage) + ":" + vm->getCname() + "(" + src_pm->getCname() +
+ "-" + dst_pm->getCname() + ")";
}
struct migration_session {
bool received_finalize = false;
- char *finalize_task_name = get_mig_task_name(ms->vm, ms->src_pm, ms->dst_pm, 3);
+ std::string finalize_task_name = get_mig_task_name(ms->vm, ms->src_pm, ms->dst_pm, 3);
while (not received_finalize) {
msg_task_t task = nullptr;
int ret = MSG_task_recv(&task, ms->mbox);
if (ret != MSG_OK) {
// An error occurred, clean the code and return
// The owner did not change, hence the task should be only destroyed on the other side
- xbt_free(finalize_task_name);
return 0;
}
- if (strcmp(task->name, finalize_task_name) == 0)
+ if (finalize_task_name == task->name)
received_finalize = 1;
MSG_task_destroy(task);
}
- xbt_free(finalize_task_name);
// Here Stage 1, 2 and 3 have been performed.
// Hence complete the migration
// start link
container_t msg = PJ_container_get(vm->getCname());
- type_t type = PJ_type_get("MSG_VM_LINK", PJ_type_get_root());
- new StartLinkEvent(MSG_get_clock(), PJ_container_get_root(), type, msg, "M", key);
+ simgrid::instr::Type* type = PJ_type_get("MSG_VM_LINK", PJ_type_get_root());
+ new simgrid::instr::StartLinkEvent(MSG_get_clock(), PJ_container_get_root(), type, msg, "M", key);
// destroy existing container of this vm
container_t existing_container = PJ_container_get(vm->getCname());
PJ_container_free(existing_container);
// create new container on the new_host location
- PJ_container_new(vm->getCname(), INSTR_MSG_VM, PJ_container_get(ms->dst_pm->getCname()));
+ PJ_container_new(vm->getCname(), simgrid::instr::INSTR_MSG_VM, PJ_container_get(ms->dst_pm->getCname()));
// end link
msg = PJ_container_get(vm->getCname());
type = PJ_type_get("MSG_VM_LINK", PJ_type_get_root());
- new EndLinkEvent(MSG_get_clock(), PJ_container_get_root(), type, msg, "M", key);
+ new simgrid::instr::EndLinkEvent(MSG_get_clock(), PJ_container_get_root(), type, msg, "M", key);
}
// Inform the SRC that the migration has been correctly performed
- char *task_name = get_mig_task_name(ms->vm, ms->src_pm, ms->dst_pm, 4);
- msg_task_t task = MSG_task_create(task_name, 0, 0, nullptr);
+ std::string task_name = get_mig_task_name(ms->vm, ms->src_pm, ms->dst_pm, 4);
+ msg_task_t task = MSG_task_create(task_name.c_str(), 0, 0, nullptr);
msg_error_t ret = MSG_task_send(task, ms->mbox_ctl);
// xbt_assert(ret == MSG_OK);
if(ret == MSG_HOST_FAILURE){
// The SRC has crashed, this is not a problem has the VM has been correctly migrated on the DST node
MSG_task_destroy(task);
}
- xbt_free(task_name);
XBT_DEBUG("mig: rx_done");
return 0;
if (vm->pimpl_vm_->dp_objs.empty())
return;
- for (auto elm : vm->pimpl_vm_->dp_objs) {
+ for (auto const& elm : vm->pimpl_vm_->dp_objs) {
dirty_page_t dp = elm.second;
double remaining = MSG_task_get_flops_amount(dp->task);
dp->prev_clock = MSG_get_clock();
{
double total = 0;
- for (auto elm : vm->pimpl_vm_->dp_objs) {
+ for (auto const& elm : vm->pimpl_vm_->dp_objs) {
const char* key = elm.first.c_str();
dirty_page_t dp = elm.second;
double remaining = MSG_task_get_flops_amount(dp->task);
int stage, int stage2_round, double mig_speed, double timeout)
{
sg_size_t sent = 0;
- char *task_name = get_mig_task_name(vm, src_pm, dst_pm, stage);
- msg_task_t task = MSG_task_create(task_name, 0, static_cast<double>(size), nullptr);
+ std::string task_name = get_mig_task_name(vm, src_pm, dst_pm, stage);
+ msg_task_t task = MSG_task_create(task_name.c_str(), 0, static_cast<double>(size), nullptr);
double clock_sta = MSG_get_clock();
else
ret = MSG_task_send(task, mbox);
- xbt_free(task_name);
-
if (ret == MSG_OK) {
sent = size;
} else if (ret == MSG_TIMEOUT) {
vm->getCname());
}
- char* expected_task_name = get_mig_task_name(vm, src_pm, dst_pm, 4);
- xbt_assert(strcmp(task->name, expected_task_name) == 0);
- xbt_free(expected_task_name);
+ xbt_assert(get_mig_task_name(vm, src_pm, dst_pm, 4) == task->name);
MSG_task_destroy(task);
}
if (TRACE_msg_vm_is_enabled()) {
container_t vm_container = PJ_container_get(vm->getCname());
- type_t type = PJ_type_get("MSG_VM_STATE", vm_container->type);
- value* val = value::get_or_new("suspend", "1 0 0", type); // suspend is red
- new PushStateEvent(MSG_get_clock(), vm_container, type, val);
+ simgrid::instr::Type* type = PJ_type_get("MSG_VM_STATE", vm_container->type_);
+ simgrid::instr::Value* val = simgrid::instr::Value::get_or_new("suspend", "1 0 0", type); // suspend is red
+ new simgrid::instr::PushStateEvent(MSG_get_clock(), vm_container, type, val);
}
}
if (TRACE_msg_vm_is_enabled()) {
container_t vm_container = PJ_container_get(vm->getCname());
- type_t type = PJ_type_get("MSG_VM_STATE", vm_container->type);
- new PopStateEvent(MSG_get_clock(), vm_container, type);
+ simgrid::instr::Type* type = PJ_type_get("MSG_VM_STATE", vm_container->type_);
+ new simgrid::instr::PopStateEvent(MSG_get_clock(), vm_container, type);
}
}