X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/347996b4a10c4e8579080692afa60e0afb88b60a..c86f2e0ead80fa2d306d5cb38201ff45f3a209c7:/src/surf/vm_hl13.cpp diff --git a/src/surf/vm_hl13.cpp b/src/surf/vm_hl13.cpp index 6e8450f6a2..aee9b9927d 100644 --- a/src/surf/vm_hl13.cpp +++ b/src/surf/vm_hl13.cpp @@ -27,14 +27,10 @@ namespace surf { /********* * Model * *********/ - VMHL13Model::VMHL13Model() : VMModel() {} void VMHL13Model::updateActionsState(double /*now*/, double /*delta*/) {} -/* ind means ''indirect'' that this is a reference on the whole dict_elm - * structure (i.e not on the surf_resource_private infos) */ - VirtualMachine *VMHL13Model::createVM(const char *name, sg_host_t host_PM) { VirtualMachine* vm = new VMHL13(this, name, NULL, host_PM); @@ -42,10 +38,8 @@ VirtualMachine *VMHL13Model::createVM(const char *name, sg_host_t host_PM) return vm; } -/* In the real world, processes on the guest operating system will be somewhat - * degraded due to virtualization overhead. The total CPU share that these - * processes get is smaller than that of the VM process gets on a host - * operating system. */ +/* In the real world, processes on the guest operating system will be somewhat degraded due to virtualization overhead. + * The total CPU share these processes get is smaller than that of the VM process gets on a host operating system. */ // const double virt_overhead = 0.95; const double virt_overhead = 1; @@ -56,7 +50,6 @@ double VMHL13Model::next_occuring_event(double now) /* 1. Now we know how many resource should be assigned to each virtual * machine. We update constraints of the virtual machine layer. * - * * If we have two virtual machine (VM1 and VM2) on a physical machine (PM1). * X1 + X2 = C (Equation 1) * where @@ -74,21 +67,16 @@ double VMHL13Model::next_occuring_event(double now) * Equation 1 was solved in the physical machine layer. * Equation 2 is solved in the virtual machine layer (here). * X1 must be passed to the virtual machine laye as a constraint value. - * **/ /* iterate for all virtual machines */ - for (VMModel::vm_list_t::iterator iter = - VMModel::ws_vms.begin(); - iter != VMModel::ws_vms.end(); ++iter) { - + for (VMModel::vm_list_t::iterator iter = VMModel::ws_vms.begin(); iter != VMModel::ws_vms.end(); ++iter) { VirtualMachine *ws_vm = &*iter; Cpu *cpu = ws_vm->p_cpu; xbt_assert(cpu, "cpu-less host"); double solved_value = ws_vm->p_action->getVariable()->value; - XBT_DEBUG("assign %f to vm %s @ pm %s", solved_value, - ws_vm->getName(), ws_vm->p_hostPM->name().c_str()); + XBT_DEBUG("assign %f to vm %s @ pm %s", solved_value, ws_vm->getName(), ws_vm->p_hostPM->name().c_str()); // TODO: check lmm_update_constraint_bound() works fine instead of the below manual substitution. // cpu_cas01->constraint->bound = solved_value; @@ -97,7 +85,6 @@ double VMHL13Model::next_occuring_event(double now) lmm_update_constraint_bound(vcpu_system, cpu->getConstraint(), virt_overhead * solved_value); } - /* 2. Calculate resource share at the virtual machine layer. */ adjustWeightOfDummyCpuActions(); @@ -108,7 +95,6 @@ double VMHL13Model::next_occuring_event(double now) /************ * Resource * ************/ - VMHL13::VMHL13(VMModel *model, const char* name, xbt_dict_t props, sg_host_t host_PM) : VirtualMachine(model, name, props, host_PM) { @@ -131,20 +117,15 @@ VMHL13::VMHL13(VMModel *model, const char* name, xbt_dict_t props, sg_host_t hos CpuCas01 *sub_cpu = static_cast(host_PM->pimpl_cpu); p_cpu = surf_cpu_model_vm->createCpu(host_VM, // the machine hosting the VM - sub_cpu->getSpeedPeakList(), // host->power_peak, - sub_cpu->getPState(), - 1, // host->power_scale, - NULL, // host->power_trace, - 1, // host->core_amount, - 1/*ON*/, // host->initiallyOn, - NULL); // host->state_trace, + sub_cpu->getSpeedPeakList(), 1 /*cores*/); + if (sub_cpu->getPState() != 0) + p_cpu->setPState(sub_cpu->getPState()); /* We create cpu_action corresponding to a VM process on the host operating system. */ /* FIXME: TODO: we have to periodically input GUESTOS_NOISE to the system? how ? */ p_action = sub_cpu->execution_start(0); - XBT_INFO("Create VM(%s)@PM(%s) with %ld mounted disks", - name, p_hostPM->name().c_str(), xbt_dynar_length(p_storage)); + XBT_VERB("Create VM(%s)@PM(%s) with %ld mounted disks", name, p_hostPM->name().c_str(), xbt_dynar_length(p_storage)); } void VMHL13::suspend() @@ -177,12 +158,10 @@ void VMHL13::restore() p_vm_state = SURF_VM_STATE_RUNNING; } -/* - * Update the physical host of the given VM - */ +/* Update the physical host of the given VM */ void VMHL13::migrate(sg_host_t host_dest) { - Host *surfHost_dst = host_dest->extension(); + HostImpl *surfHost_dst = host_dest->extension(); const char *vm_name = getName(); const char *pm_name_src = p_hostPM->name().c_str(); const char *pm_name_dst = surfHost_dst->getName(); @@ -197,9 +176,9 @@ void VMHL13::migrate(sg_host_t host_dest) /* create a cpu action bound to the pm model at the destination. */ CpuAction *new_cpu_action = static_cast(host_dest->pimpl_cpu->execution_start(0)); - e_surf_action_state_t state = p_action->getState(); - if (state != SURF_ACTION_DONE) - XBT_CRITICAL("FIXME: may need a proper handling, %d", state); + Action::State state = p_action->getState(); + if (state != Action::State::done) + XBT_CRITICAL("FIXME: may need a proper handling, %d", static_cast(state)); if (p_action->getRemainsNoUpdate() > 0) XBT_CRITICAL("FIXME: need copy the state(?), %f", p_action->getRemainsNoUpdate()); @@ -227,6 +206,5 @@ void VMHL13::setAffinity(Cpu *cpu, unsigned long mask){ p_action->setAffinity(cpu, mask); } - } }