X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/20fb1d8f699a02bdfd23130097cf7cf3d11f5840..f6acb706fa20197049c849cf3021077c5fa97f93:/src/msg/msg_vm.cpp diff --git a/src/msg/msg_vm.cpp b/src/msg/msg_vm.cpp index c43ab8db24..67d1e40867 100644 --- a/src/msg/msg_vm.cpp +++ b/src/msg/msg_vm.cpp @@ -14,7 +14,6 @@ #include "simgrid/plugins/live_migration.h" #include "src/instr/instr_private.hpp" #include "src/plugins/vm/VirtualMachineImpl.hpp" -#include "src/plugins/vm/VmHostExt.hpp" #include "simgrid/host.h" #include "simgrid/simix.hpp" @@ -37,53 +36,27 @@ msg_host_t MSG_vm_get_pm(msg_vm_t vm) return vm->getPm(); } -/** \ingroup m_vm_management - * \brief Set the parameters of a given host - * - * \param vm a vm - * \param params a parameter object - */ -void MSG_vm_set_params(msg_vm_t vm, vm_params_t params) -{ - vm->setParameters(params); -} - -/** \ingroup m_vm_management - * \brief Get the parameters of a given host - * - * \param vm the vm you are interested into - * \param params a prameter object - */ -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 **** */ void MSG_vm_set_bound(msg_vm_t vm, double bound) { vm->setBound(bound); } -static inline int __MSG_vm_is_state(msg_vm_t vm, e_surf_vm_state_t state) -{ - return vm->pimpl_vm_ != nullptr && vm->getState() == state; -} /** @brief Returns whether the given VM has just created, not running. * @ingroup msg_VMs */ int MSG_vm_is_created(msg_vm_t vm) { - return __MSG_vm_is_state(vm, SURF_VM_STATE_CREATED); + return vm->getState() == SURF_VM_STATE_CREATED; } /** @brief Returns whether the given VM is currently running @@ -91,15 +64,7 @@ int MSG_vm_is_created(msg_vm_t vm) */ int MSG_vm_is_running(msg_vm_t vm) { - return __MSG_vm_is_state(vm, SURF_VM_STATE_RUNNING); -} - -/** @brief Returns whether the given VM is currently migrating - * @ingroup msg_VMs - */ -int MSG_vm_is_migrating(msg_vm_t vm) -{ - return vm->isMigrating(); + return vm->getState() == SURF_VM_STATE_RUNNING; } /** @brief Returns whether the given VM is currently suspended, not running. @@ -107,38 +72,10 @@ int MSG_vm_is_migrating(msg_vm_t vm) */ int MSG_vm_is_suspended(msg_vm_t vm) { - return __MSG_vm_is_state(vm, SURF_VM_STATE_SUSPENDED); + return vm->getState() == SURF_VM_STATE_SUSPENDED; } /* **** ******** MSG vm actions ********* **** */ -/** @brief Create a new VM with specified parameters. - * @ingroup msg_VMs* - * @param pm Physical machine that will host the VM - * @param name Must be unique - * @param coreAmount Must be >= 1 - * @param ramsize [TODO] - * @param mig_netspeed Amount of Mbyte/s allocated to the migration (cannot be larger than net_cap). Use 0 if unsure. - * @param dp_intensity Dirty page percentage according to migNetSpeed, [0-100]. Use 0 if unsure. - */ -msg_vm_t MSG_vm_create(msg_host_t pm, const char* name, int coreAmount, int ramsize, int mig_netspeed, int dp_intensity) -{ - simgrid::vm::VmHostExt::ensureVmExtInstalled(); - - /* For the moment, intensity_rate is the percentage against the migration bandwidth */ - - msg_vm_t vm = new simgrid::s4u::VirtualMachine(name, pm, coreAmount, static_cast(ramsize) * 1024 * 1024); - s_vm_params_t params; - params.max_downtime = 0.03; - params.mig_speed = static_cast(mig_netspeed) * 1024 * 1024; // mig_speed - params.dp_intensity = static_cast(dp_intensity) / 100; - 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(¶ms); - - return vm; -} - /** @brief Create a new VM object with the default parameters * @ingroup msg_VMs* * @@ -146,14 +83,7 @@ msg_vm_t MSG_vm_create(msg_host_t pm, const char* name, int coreAmount, int rams */ 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); - - msg_vm_t vm = new simgrid::s4u::VirtualMachine(name, pm, 1); - s_vm_params_t params; - memset(¶ms, 0, sizeof(params)); - vm->setParameters(¶ms); - return vm; + return MSG_vm_create_multicore(pm, name, 1); } /** @brief Create a new VM object with the default parameters, but with a specified amount of cores * @ingroup msg_VMs* @@ -165,11 +95,7 @@ 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); - msg_vm_t vm = new simgrid::s4u::VirtualMachine(name, pm, coreAmount); - s_vm_params_t params; - memset(¶ms, 0, sizeof(params)); - vm->setParameters(¶ms); - return vm; + return new simgrid::s4u::VirtualMachine(name, pm, coreAmount); } /** @brief Start a vm (i.e., boot the guest operating system) @@ -180,11 +106,6 @@ msg_vm_t MSG_vm_create_multicore(msg_host_t pm, const char* name, int coreAmount void MSG_vm_start(msg_vm_t vm) { vm->start(); - if (TRACE_msg_vm_is_enabled()) { - simgrid::instr::StateType* state = simgrid::instr::Container::byName(vm->getName())->getState("MSG_VM_STATE"); - state->addEntityValue("start", "0 0 1"); // start is blue - state->pushEvent("start"); - } } /** @brief Immediately suspend the execution of all processes within the given VM. @@ -198,11 +119,6 @@ void MSG_vm_start(msg_vm_t vm) void MSG_vm_suspend(msg_vm_t vm) { vm->suspend(); - if (TRACE_msg_vm_is_enabled()) { - simgrid::instr::StateType* state = simgrid::instr::Container::byName(vm->getName())->getState("MSG_VM_STATE"); - state->addEntityValue("suspend", "1 0 0"); // suspend is red - state->pushEvent("suspend"); - } } /** @brief Resume the execution of the VM. All processes on the VM run again. @@ -213,8 +129,6 @@ void MSG_vm_suspend(msg_vm_t vm) void MSG_vm_resume(msg_vm_t vm) { vm->resume(); - if (TRACE_msg_vm_is_enabled()) - simgrid::instr::Container::byName(vm->getName())->getState("MSG_VM_STATE")->popEvent(); } /** @brief Immediately kills all processes within the given VM. @@ -229,25 +143,18 @@ void MSG_vm_shutdown(msg_vm_t vm) vm->shutdown(); } +/* Deprecated. Please use MSG_vm_create_migratable() instead */ +msg_vm_t MSG_vm_create(msg_host_t ind_pm, const char* name, int coreAmount, int ramsize, int mig_netspeed, + int dp_intensity) +{ + return sg_vm_create_migratable(ind_pm, name, coreAmount, ramsize, mig_netspeed, dp_intensity); +} + /** @brief Destroy a VM. Destroy the VM object from the simulation. * @ingroup msg_VMs */ void MSG_vm_destroy(msg_vm_t vm) { - if (vm->isMigrating()) - THROWF(vm_error, 0, "Cannot destroy VM '%s', which is migrating.", vm->getCname()); - - /* First, terminate all processes on the VM if necessary */ - vm->shutdown(); - - /* Then, destroy the VM object */ vm->destroy(); - - if (TRACE_msg_vm_is_enabled()) { - container_t container = simgrid::instr::Container::byName(vm->getName()); - container->removeFromParent(); - delete container; - } } - }