-/* Copyright (c) 2012-2014. The SimGrid Team.
+/* Copyright (c) 2012-2015. The SimGrid Team.
* All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
#include "xbt/sysdep.h"
#include "xbt/log.h"
#include "simgrid/platf.h"
+#include "simgrid/host.h"
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(msg_vm, msg,
"Cloud-oriented parts of the MSG API");
msg_vm_t MSG_vm_get_by_name(const char *name)
{
- return MSG_get_host_by_name(name);
+ return MSG_host_by_name(name);
}
/** \ingroup m_vm_management
*/
int MSG_vm_is_migrating(msg_vm_t vm)
{
- msg_host_priv_t priv = msg_host_resource_priv(vm);
+ msg_host_priv_t priv = sg_host_msg(vm);
return priv->is_migrating;
}
double update_speed = ((double)dp_intensity/100) * mig_netspeed;
msg_vm_t vm = MSG_vm_create_core(ind_pm, name);
- s_ws_params_t params;
+ s_vm_params_t params;
memset(¶ms, 0, sizeof(params));
params.ramsize = (sg_size_t)ramsize * 1024 * 1024;
//params.overcommit = 0;
/* make sure the VM of the same name does not exit */
{
xbt_dictelm_t ind_host_tmp = xbt_lib_get_elm_or_null(host_lib, name);
- if (ind_host_tmp && xbt_lib_get_level(ind_host_tmp, SIMIX_HOST_LEVEL) != NULL) {
+ if (ind_host_tmp && sg_host_simix(ind_host_tmp) != NULL) {
XBT_ERROR("host %s already exits", name);
return NULL;
}
// The structure has been created in the do_migration function and should only be freed in the same place ;)
struct migration_session *ms = MSG_process_get_data(MSG_process_self());
- s_ws_params_t params;
+ s_vm_params_t params;
simcall_host_get_params(ms->vm, ¶ms);
int need_exit = 0;
msg_vm_t vm = ms->vm;
msg_host_t src_pm = ms->src_pm;
msg_host_t dst_pm = ms-> dst_pm;
- msg_host_priv_t priv = msg_host_resource_priv(vm);
-
-// TODO: we have an issue, if the DST node is turning off during the three next calls, then the VM is in an inconsistent state
-// I should check with Takahiro in order to make this portion of code atomic
- /* deinstall the current affinity setting for the CPU */
- simcall_vm_set_affinity(vm, src_pm, 0);
-
- /* Update the vm location */
- simcall_vm_migrate(vm, dst_pm);
-
- /* Resume the VM */
- simcall_vm_resume(vm);
+ msg_host_priv_t priv = sg_host_msg(vm);
+
+// // TODO: we have an issue, if the DST node is turning off during the three next calls, then the VM is in an inconsistent state
+// // I should check with Takahiro in order to make this portion of code atomic
+// /* deinstall the current affinity setting for the CPU */
+// simcall_vm_set_affinity(vm, src_pm, 0);
+//
+// /* Update the vm location */
+// simcall_vm_migrate(vm, dst_pm);
+//
+// /* Resume the VM */
+// simcall_vm_resume(vm);
+//
+ simcall_vm_migratefrom_resumeto(vm, src_pm, dst_pm);
/* install the affinity setting of the VM on the destination pm */
{
{
// Now the VM is running on the new host (the migration is completed) (even if the SRC crash)
- msg_host_priv_t priv = msg_host_resource_priv(vm);
+ msg_host_priv_t priv = sg_host_msg(vm);
priv->is_migrating = 0;
XBT_DEBUG("VM(%s) moved from PM(%s) to PM(%s)", ms->vm->key, ms->src_pm->key, ms->dst_pm->key);
TRACE_msg_vm_change_host(ms->vm, ms->src_pm, ms->dst_pm);
static void reset_dirty_pages(msg_vm_t vm)
{
- msg_host_priv_t priv = msg_host_resource_priv(vm);
+ msg_host_priv_t priv = sg_host_msg(vm);
char *key = NULL;
xbt_dict_cursor_t cursor = NULL;
static void start_dirty_page_tracking(msg_vm_t vm)
{
- msg_host_priv_t priv = msg_host_resource_priv(vm);
+ msg_host_priv_t priv = sg_host_msg(vm);
priv->dp_enabled = 1;
reset_dirty_pages(vm);
static void stop_dirty_page_tracking(msg_vm_t vm)
{
- msg_host_priv_t priv = msg_host_resource_priv(vm);
+ msg_host_priv_t priv = sg_host_msg(vm);
priv->dp_enabled = 0;
}
static double lookup_computed_flop_counts(msg_vm_t vm, int stage_for_fancy_debug, int stage2_round_for_fancy_debug)
{
- msg_host_priv_t priv = msg_host_resource_priv(vm);
+ msg_host_priv_t priv = sg_host_msg(vm);
double total = 0;
char *key = NULL;
// msg_process_t MSG_process_create(const char *name, xbt_main_func_t code, void *data, msg_host_t host)
void MSG_host_add_task(msg_host_t host, msg_task_t task)
{
- msg_host_priv_t priv = msg_host_resource_priv(host);
+ msg_host_priv_t priv = sg_host_msg(host);
double remaining = MSG_task_get_flops_amount(task);
char *key = bprintf("%s-%p", task->name, task);
void MSG_host_del_task(msg_host_t host, msg_task_t task)
{
- msg_host_priv_t priv = msg_host_resource_priv(host);
+ msg_host_priv_t priv = sg_host_msg(host);
char *key = bprintf("%s-%p", task->name, task);
// Note that the ms structure has been allocated in do_migration and hence should be freed in the same function ;)
struct migration_session *ms = MSG_process_get_data(MSG_process_self());
- s_ws_params_t params;
+ s_vm_params_t params;
simcall_host_get_params(ms->vm, ¶ms);
const sg_size_t ramsize = params.ramsize;
const sg_size_t devsize = params.devsize;
if (MSG_vm_is_migrating(vm))
THROWF(vm_error, 0, "VM(%s) is already migrating", sg_host_name(vm));
- msg_host_priv_t priv = msg_host_resource_priv(vm);
+ msg_host_priv_t priv = sg_host_msg(vm);
priv->is_migrating = 1;
{
*/
void MSG_vm_set_affinity(msg_vm_t vm, msg_host_t pm, unsigned long mask)
{
- msg_host_priv_t priv = msg_host_resource_priv(vm);
+ msg_host_priv_t priv = sg_host_msg(vm);
if (mask == 0)
xbt_dict_remove_ext(priv->affinity_mask_db, (char *) pm, sizeof(pm));