return vm;
}
-static inline double get_solved_value(CpuAction *cpu_action)
-{
- return cpu_action->getVariable()->value;
-}
-
/* 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
Cpu *cpu = ws_vm->p_cpu;
xbt_assert(cpu, "cpu-less host");
- double solved_value = get_solved_value(ws_vm->p_action);
+ 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());
return ret;
}
-Action *VMHL13Model::executeParallelTask(int host_nb,
- sg_host_t *host_list,
- double *flops_amount,
- double *bytes_amount,
- double rate){
-#define cost_or_zero(array,pos) ((array)?(array)[pos]:0.0)
- if ((host_nb == 1)
- && (cost_or_zero(bytes_amount, 0) == 0.0))
- return host_list[0]->pimpl_cpu->execute(flops_amount[0]);
- else if ((host_nb == 1)
- && (cost_or_zero(flops_amount, 0) == 0.0))
- return surf_network_model_communicate(surf_network_model, host_list[0], host_list[0],bytes_amount[0], rate);
- else if ((host_nb == 2)
- && (cost_or_zero(flops_amount, 0) == 0.0)
- && (cost_or_zero(flops_amount, 1) == 0.0)) {
- int i,nb = 0;
- double value = 0.0;
-
- for (i = 0; i < host_nb * host_nb; i++) {
- if (cost_or_zero(bytes_amount, i) > 0.0) {
- nb++;
- value = cost_or_zero(bytes_amount, i);
- }
- }
- if (nb == 1)
- return surf_network_model_communicate(surf_network_model, host_list[0], host_list[1], value, rate);
- }
-#undef cost_or_zero
-
- THROW_UNIMPLEMENTED; /* This model does not implement parallel tasks for more than 2 hosts. */
- return NULL;
-}
-
/************
* Resource *
************/
/* 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 ? */
- // vm_ws->cpu_action = surf_cpu_model_pm->extension.cpu.execute(host_PM, GUESTOS_NOISE);
- p_action = sub_cpu->execute(0);
+ 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));
/* Update vcpu's action for the new pm */
{
/* create a cpu action bound to the pm model at the destination. */
- CpuAction *new_cpu_action = static_cast<CpuAction*>(host_dest->pimpl_cpu->execute(0));
+ CpuAction *new_cpu_action = static_cast<CpuAction*>(host_dest->pimpl_cpu->execution_start(0));
e_surf_action_state_t state = p_action->getState();
if (state != SURF_ACTION_DONE)