X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/c66bb944af7d961fa6908a18a9d5ea949d2d390a..b372d23d3d8818b4547ef207f43b45709298a002:/src/plugins/vm/VirtualMachineImpl.cpp diff --git a/src/plugins/vm/VirtualMachineImpl.cpp b/src/plugins/vm/VirtualMachineImpl.cpp index 4fab967633..20a7dce251 100644 --- a/src/plugins/vm/VirtualMachineImpl.cpp +++ b/src/plugins/vm/VirtualMachineImpl.cpp @@ -55,7 +55,7 @@ static void host_state_change(s4u::Host const& host) } } -static void add_active_exec(s4u::Actor const&, s4u::Exec const& task) +static void add_active_exec(s4u::Exec const& task) { const s4u::VirtualMachine* vm = dynamic_cast(task.get_host()); if (vm != nullptr) { @@ -65,7 +65,7 @@ static void add_active_exec(s4u::Actor const&, s4u::Exec const& task) } } -static void remove_active_exec(s4u::Actor const&, s4u::Exec const& task) +static void remove_active_exec(s4u::Exec const& task) { const s4u::VirtualMachine* vm = dynamic_cast(task.get_host()); if (vm != nullptr) { @@ -139,6 +139,9 @@ double VMModel::next_occurring_event(double now) /* iterate for all virtual machines */ for (s4u::VirtualMachine* const& ws_vm : VirtualMachineImpl::allVms_) { + if (ws_vm->get_state() == s4u::VirtualMachine::state::SUSPENDED) // Ignore suspended VMs + continue; + const kernel::resource::Cpu* cpu = ws_vm->pimpl_cpu; // solved_value below is X1 in comment above: what this VM got in the sharing on the PM @@ -170,7 +173,7 @@ VirtualMachineImpl::VirtualMachineImpl(simgrid::s4u::VirtualMachine* piface, sim * The value for GUESTOS_NOISE corresponds to the cost of the global action associated to the VM. It corresponds to * the cost of a VM running no tasks. */ - action_ = host_PM->pimpl_cpu->execution_start(0, core_amount); + action_ = physical_host_->pimpl_cpu->execution_start(0, core_amount_); // It's empty for now, so it should not request resources in the PM update_action_weight(); @@ -287,6 +290,9 @@ void VirtualMachineImpl::set_physical_host(s4u::Host* destination) /* update net_elm with that of the destination physical host */ piface_->set_netpoint(destination->get_netpoint()); + /* Adapt the speed, pstate and other physical characteristics to the one of our new physical CPU */ + piface_->pimpl_cpu->reset_vcpu(destination->pimpl_cpu); + physical_host_ = destination; /* Update vcpu's action for the new pm */