A
lgorithmique
N
umérique
D
istribuée
Public GIT Repository
projects
/
simgrid.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Make the energy plugin usable with ptask (but not DVFS) (fix #27)
[simgrid.git]
/
src
/
surf
/
vm_hl13.cpp
diff --git
a/src/surf/vm_hl13.cpp
b/src/surf/vm_hl13.cpp
index
c0f76ca
..
89cbef1
100644
(file)
--- a/
src/surf/vm_hl13.cpp
+++ b/
src/surf/vm_hl13.cpp
@@
-6,6
+6,8
@@
#include <algorithm>
#include <algorithm>
+#include <simgrid/host.h>
+
#include "cpu_cas01.hpp"
#include "vm_hl13.hpp"
#include "cpu_cas01.hpp"
#include "vm_hl13.hpp"
@@
-36,7
+38,7
@@
void VMHL13Model::updateActionsState(double /*now*/, double /*delta*/) {}
VirtualMachine *VMHL13Model::createVM(const char *name, sg_host_t host_PM)
{
VirtualMachine* vm = new VMHL13(this, name, NULL, host_PM);
VirtualMachine *VMHL13Model::createVM(const char *name, sg_host_t host_PM)
{
VirtualMachine* vm = new VMHL13(this, name, NULL, host_PM);
-
surf_callback_emit(VMCreatedCallbacks,
vm);
+
VMCreatedCallbacks(
vm);
return vm;
}
return vm;
}
@@
-91,7
+93,7
@@
double VMHL13Model::shareResources(double now)
double solved_value = get_solved_value(ws_vm->p_action);
XBT_DEBUG("assign %f to vm %s @ pm %s", solved_value,
double solved_value = get_solved_value(ws_vm->p_action);
XBT_DEBUG("assign %f to vm %s @ pm %s", solved_value,
- ws_vm->getName(), ws_vm->p_
subWs->getName
());
+ ws_vm->getName(), ws_vm->p_
hostPM->getName().c_str
());
// TODO: check lmm_update_constraint_bound() works fine instead of the below manual substitution.
// cpu_cas01->constraint->bound = solved_value;
// TODO: check lmm_update_constraint_bound() works fine instead of the below manual substitution.
// cpu_cas01->constraint->bound = solved_value;
@@
-162,12
+164,9
@@
Action *VMHL13Model::executeParallelTask(int host_nb,
* Resource *
************/
* Resource *
************/
-VMHL13::VMHL13(VMModel *model, const char* name, xbt_dict_t props,
- sg_host_t host_PM)
- : VirtualMachine(model, name, props, NULL, NULL)
+VMHL13::VMHL13(VMModel *model, const char* name, xbt_dict_t props, sg_host_t host_PM)
+ : VirtualMachine(model, name, props, host_PM)
{
{
- Host *sub_ws = surf_host_resource_priv(host_PM);
-
/* Currently, we assume a VM has no storage. */
p_storage = NULL;
/* Currently, we assume a VM has no storage. */
p_storage = NULL;
@@
-177,33
+176,31
@@
VMHL13::VMHL13(VMModel *model, const char* name, xbt_dict_t props,
* from the VM name, we have to make sure that the system does not call the
* free callback for the network resource object. The network resource object
* is still used by the physical machine. */
* from the VM name, we have to make sure that the system does not call the
* free callback for the network resource object. The network resource object
* is still used by the physical machine. */
-
sg_host_t sg_sub_ws = sg_host_by_name_or_create(sub_ws->getName(
));
-
p_netElm = new RoutingEdgeWrapper(sg_host_edge(sg_sub_ws)
);
- sg_host_edge_set(
sg_host_by_name_or_create(name)
, p_netElm);
+
p_netElm = new RoutingEdgeWrapper(sg_host_edge(host_PM
));
+
sg_host_t host = sg_host_by_name_or_create(name
);
+ sg_host_edge_set(
host
, p_netElm);
- p_subWs = sub_ws;
p_currentState = SURF_VM_STATE_CREATED;
// //// CPU RELATED STUFF ////
// Roughly, create a vcpu resource by using the values of the sub_cpu one.
CpuCas01 *sub_cpu = static_cast<CpuCas01*>(sg_host_surfcpu(host_PM));
p_currentState = SURF_VM_STATE_CREATED;
// //// CPU RELATED STUFF ////
// Roughly, create a vcpu resource by using the values of the sub_cpu one.
CpuCas01 *sub_cpu = static_cast<CpuCas01*>(sg_host_surfcpu(host_PM));
- p_cpu = surf_cpu_model_vm->createCpu(
name, // name
+ p_cpu = surf_cpu_model_vm->createCpu(
host, // 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,
SURF_RESOURCE_ON, // host->initial_state,
sub_cpu->getSpeedPeakList(), // host->power_peak,
sub_cpu->getPState(),
1, // host->power_scale,
NULL, // host->power_trace,
1, // host->core_amount,
SURF_RESOURCE_ON, // host->initial_state,
- NULL, // host->state_trace,
- NULL); // host->properties,
+ NULL); // host->state_trace,
/* 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);
/* 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);
- XBT_INFO("Create VM(%s)@PM(%s) with %ld mounted disks", name,
sub_ws->getName
(), xbt_dynar_length(p_storage));
+ XBT_INFO("Create VM(%s)@PM(%s) with %ld mounted disks", name,
p_hostPM->getName().c_str
(), xbt_dynar_length(p_storage));
}
/*
}
/*
@@
-269,15
+266,15
@@
void VMHL13::restore()
/*
* Update the physical host of the given VM
*/
/*
* Update the physical host of the given VM
*/
-void VMHL13::migrate(sg_host_t
ind_dst_pm
)
+void VMHL13::migrate(sg_host_t
host_dest
)
{
/* ind_dst_pm equals to smx_host_t */
{
/* ind_dst_pm equals to smx_host_t */
- Host *
ws_dst = static_cast<Host*>(surf_host_resource_priv(ind_dst_pm
));
+ Host *
surfHost_dst = static_cast<Host*>(surf_host_resource_priv(host_dest
));
const char *vm_name = getName();
const char *vm_name = getName();
- const char *pm_name_src = p_
subWs->getName
();
- const char *pm_name_dst =
ws
_dst->getName();
+ const char *pm_name_src = p_
hostPM->getName().c_str
();
+ const char *pm_name_dst =
surfHost
_dst->getName();
- xbt_assert(
ws
_dst);
+ xbt_assert(
surfHost
_dst);
/* update net_elm with that of the destination physical host */
RoutingEdge *old_net_elm = p_netElm;
/* update net_elm with that of the destination physical host */
RoutingEdge *old_net_elm = p_netElm;
@@
-291,13
+288,13
@@
void VMHL13::migrate(sg_host_t ind_dst_pm)
p_netElm = new_net_elm;
sg_host_edge_set(sg_host_by_name(vm_name), p_netElm);
p_netElm = new_net_elm;
sg_host_edge_set(sg_host_by_name(vm_name), p_netElm);
- p_
subWs = ws_d
st;
+ p_
hostPM = host_de
st;
/* 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*>(
/* 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*>(
- static_cast<Cpu*>(sg_host_surfcpu(
ind_dst_pm
))->execute(0));
+ static_cast<Cpu*>(sg_host_surfcpu(
host_dest
))->execute(0));
e_surf_action_state_t state = p_action->getState();
if (state != SURF_ACTION_DONE)
e_surf_action_state_t state = p_action->getState();
if (state != SURF_ACTION_DONE)
@@
-331,16
+328,6
@@
void VMHL13::setAffinity(Cpu *cpu, unsigned long mask){
p_action->setAffinity(cpu, mask);
}
p_action->setAffinity(cpu, mask);
}
-/*
- * A surf level object will be useless in the upper layer. Returning the
- * dict_elm of the host.
- **/
-sg_host_t VMHL13::getPm()
-{
- // TODO, store pointer to the PM?
- return simgrid::Host::by_name_or_null(p_subWs->getName());
-}
-
/* Adding a task to a VM updates the VCPU task on its physical machine. */
Action *VMHL13::execute(double size)
{
/* Adding a task to a VM updates the VCPU task on its physical machine. */
Action *VMHL13::execute(double size)
{
@@
-348,7
+335,7
@@
Action *VMHL13::execute(double size)
double new_cost = old_cost + size;
XBT_DEBUG("VM(%s)@PM(%s): update dummy action's cost (%f -> %f)",
double new_cost = old_cost + size;
XBT_DEBUG("VM(%s)@PM(%s): update dummy action's cost (%f -> %f)",
- getName(), p_
subWs->getName
(),
+ getName(), p_
hostPM->getName().c_str
(),
old_cost, new_cost);
p_action->setCost(new_cost);
old_cost, new_cost);
p_action->setCost(new_cost);