X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/e595b191c3e10a96a9d896f6ecec9c4df6707aef..4bd1f48f0bf1ad1703be680ec2a38d626c6a2668:/src/msg/msg_vm.cpp diff --git a/src/msg/msg_vm.cpp b/src/msg/msg_vm.cpp index 1dc7c83390..4c82558cee 100644 --- a/src/msg/msg_vm.cpp +++ b/src/msg/msg_vm.cpp @@ -187,9 +187,9 @@ void MSG_vm_start(msg_vm_t vm) 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); } } @@ -211,17 +211,18 @@ void MSG_vm_shutdown(msg_vm_t vm) 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 { @@ -245,7 +246,7 @@ static int migration_rx_fun(int argc, char *argv[]) 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); @@ -253,16 +254,14 @@ static int migration_rx_fun(int argc, char *argv[]) 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 @@ -297,8 +296,8 @@ static int migration_rx_fun(int argc, char *argv[]) // 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()); @@ -306,17 +305,17 @@ static int migration_rx_fun(int argc, char *argv[]) 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){ @@ -328,7 +327,6 @@ static int migration_rx_fun(int argc, char *argv[]) // 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; @@ -340,7 +338,7 @@ static void start_dirty_page_tracking(msg_vm_t vm) 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(); @@ -369,7 +367,7 @@ static double lookup_computed_flop_counts(msg_vm_t vm, int stage_for_fancy_debug { 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); @@ -451,8 +449,8 @@ static sg_size_t send_migration_data(msg_vm_t vm, msg_host_t src_pm, msg_host_t 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(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(size), nullptr); double clock_sta = MSG_get_clock(); @@ -462,8 +460,6 @@ static sg_size_t send_migration_data(msg_vm_t vm, msg_host_t src_pm, msg_host_t else ret = MSG_task_send(task, mbox); - xbt_free(task_name); - if (ret == MSG_OK) { sent = size; } else if (ret == MSG_TIMEOUT) { @@ -757,9 +753,7 @@ void MSG_vm_migrate(msg_vm_t vm, msg_host_t dst_pm) 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); } @@ -780,9 +774,9 @@ void MSG_vm_suspend(msg_vm_t vm) 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); } } @@ -797,8 +791,8 @@ void MSG_vm_resume(msg_vm_t vm) 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); } }