#include "simgrid/host.h"
#include "simgrid/simix.hpp"
-SG_BEGIN_DECL()
+extern "C" {
-struct dirty_page {
+struct s_dirty_page {
double prev_clock;
double prev_remaining;
msg_task_t task;
};
-typedef struct dirty_page s_dirty_page;
-typedef struct dirty_page* dirty_page_t;
+typedef s_dirty_page* dirty_page_t;
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(msg_vm, msg, "Cloud-oriented parts of the MSG API");
msg_vm_t vm = new simgrid::s4u::VirtualMachine(name, pm, coreAmount);
s_vm_params_t params;
- memset(¶ms, 0, sizeof(params));
- params.ramsize = static_cast<sg_size_t>(ramsize) * 1024 * 1024;
- params.devsize = 0;
- params.skip_stage2 = 0;
+ params.ncpus = 0;
+ params.ramsize = static_cast<sg_size_t>(ramsize) * 1024 * 1024;
+ params.overcommit = 0;
+ params.devsize = 0;
+ params.skip_stage1 = 0;
+ params.skip_stage2 = 0;
params.max_downtime = 0.03;
- params.mig_speed = static_cast<double>(mig_netspeed) * 1024 * 1024; // mig_speed
+ params.mig_speed = static_cast<double>(mig_netspeed) * 1024 * 1024; // mig_speed
params.dp_intensity = static_cast<double>(dp_intensity) / 100;
params.dp_cap = params.ramsize * 0.9; // assume working set memory is 90% of ramsize
simgrid::simix::kernelImmediate([vm]() { vm->destroy(); });
if (TRACE_msg_vm_is_enabled()) {
- container_t container = PJ_container_get(vm->getCname());
- PJ_container_remove_from_parent(container);
+ container_t container = simgrid::instr::Container::byName(vm->getName());
+ container->removeFromParent();
delete container;
}
}
{
vm->start();
if (TRACE_msg_vm_is_enabled()) {
- container_t vm_container = PJ_container_get(vm->getCname());
- simgrid::instr::Type* type = vm_container->type_->getChild("MSG_VM_STATE");
- simgrid::instr::Value* val = simgrid::instr::Value::get_or_new("start", "0 0 1", type); // start is blue
- new simgrid::instr::PushStateEvent(MSG_get_clock(), vm_container, type, val);
+ 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");
}
}
XBT_DEBUG("mig: rx_start");
// The structure has been created in the do_migration function and should only be freed in the same place ;)
- struct migration_session* ms = static_cast<migration_session*>(MSG_process_get_data(MSG_process_self()));
+ migration_session* ms = static_cast<migration_session*>(MSG_process_get_data(MSG_process_self()));
bool received_finalize = false;
if (TRACE_msg_vm_is_enabled()) {
static long long int counter = 0;
- char key[INSTR_DEFAULT_STR_SIZE];
- snprintf(key, INSTR_DEFAULT_STR_SIZE, "%lld", counter);
+ std::string key = std::to_string(counter);
counter++;
// start link
- container_t msg = PJ_container_get(vm->getCname());
- simgrid::instr::Type* type = PJ_type_get_root()->getChild("MSG_VM_LINK");
- new simgrid::instr::StartLinkEvent(MSG_get_clock(), PJ_container_get_root(), type, msg, "M", key);
+ container_t msg = simgrid::instr::Container::byName(vm->getName());
+ simgrid::instr::Container::getRoot()->getLink("MSG_VM_LINK")->startEvent(msg, "M", key);
// destroy existing container of this vm
- container_t existing_container = PJ_container_get(vm->getCname());
- PJ_container_remove_from_parent(existing_container);
+ container_t existing_container = simgrid::instr::Container::byName(vm->getName());
+ existing_container->removeFromParent();
delete existing_container;
// create new container on the new_host location
- new simgrid::instr::Container(vm->getCname(), simgrid::instr::INSTR_MSG_VM,
- PJ_container_get(ms->dst_pm->getCname()));
+ new simgrid::instr::Container(vm->getCname(), "MSG_VM", simgrid::instr::Container::byName(ms->dst_pm->getName()));
// end link
- msg = PJ_container_get(vm->getCname());
- type = PJ_type_get_root()->getChild("MSG_VM_LINK");
- new simgrid::instr::EndLinkEvent(MSG_get_clock(), PJ_container_get_root(), type, msg, "M", key);
+ msg = simgrid::instr::Container::byName(vm->getName());
+ simgrid::instr::Container::getRoot()->getLink("MSG_VM_LINK")->endEvent(msg, "M", key);
}
// Inform the SRC that the migration has been correctly performed
XBT_DEBUG("mig: tx_start");
// Note that the ms structure has been allocated in do_migration and hence should be freed in the same function ;)
- migration_session *ms = static_cast<migration_session *>(MSG_process_get_data(MSG_process_self()));
+ migration_session* ms = static_cast<migration_session*>(MSG_process_get_data(MSG_process_self()));
double host_speed = ms->vm->pimpl_vm_->getPm()->getSpeed();
s_vm_params_t params;
vm->pimpl_vm_->isMigrating = true;
- struct migration_session *ms = xbt_new(struct migration_session, 1);
+ migration_session* ms = xbt_new(migration_session, 1);
ms->vm = vm;
ms->src_pm = src_pm;
ms->dst_pm = dst_pm;
XBT_DEBUG("vm_suspend done");
if (TRACE_msg_vm_is_enabled()) {
- container_t vm_container = PJ_container_get(vm->getCname());
- simgrid::instr::Type* type = vm_container->type_->getChild("MSG_VM_STATE");
- simgrid::instr::Value* val = simgrid::instr::Value::get_or_new("suspend", "1 0 0", type); // suspend is red
- new simgrid::instr::PushStateEvent(MSG_get_clock(), vm_container, type, val);
+ 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");
}
}
{
vm->pimpl_vm_->resume();
- if (TRACE_msg_vm_is_enabled()) {
- container_t vm_container = PJ_container_get(vm->getCname());
- simgrid::instr::Type* type = vm_container->type_->getChild("MSG_VM_STATE");
- new simgrid::instr::PopStateEvent(MSG_get_clock(), vm_container, type);
- }
+ if (TRACE_msg_vm_is_enabled())
+ simgrid::instr::Container::byName(vm->getName())->getState("MSG_VM_STATE")->popEvent();
}
/** @brief Get the physical host of a given VM.
{
simgrid::simix::kernelImmediate([vm, bound]() { vm->pimpl_vm_->setBound(bound); });
}
-
-SG_END_DECL()
+}