-/* Copyright (c) 2012-2013. The SimGrid Team.
+/* Copyright (c) 2012-2014. The SimGrid Team.
* All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
/** \ingroup m_host_management
* \brief Change the value of a given host property
*
- * \param host a host
+ * \param vm a vm
* \param name a property name
* \param value what to change the property to
* \param free_ctn the freeing function to use to kill the value on need
int nargvs = 4;
char **argv = xbt_new(char *, nargvs);
- argv[0] = xbt_strdup(pr_name);
- argv[1] = bprintf("%lf", computation);
- argv[2] = bprintf("%lf", prio);
+ argv[0] = pr_name;
+ argv[1] = bprintf("%f", computation);
+ argv[2] = bprintf("%f", prio);
argv[3] = NULL;
MSG_process_create_with_arguments(pr_name, deferred_exec_fun, NULL, host, nargvs - 1, argv);
-
- xbt_free(pr_name);
}
int nargvs = 3;
char **argv = xbt_new(char *, nargvs);
- argv[0] = xbt_strdup(pr_name);
- argv[1] = xbt_strdup(mbox);
+ argv[0] = pr_name;
+ argv[1] = mbox;
argv[2] = NULL;
// XBT_INFO("micro start: mbox %s", mbox);
MSG_process_create_with_arguments(pr_name, task_tx_overhead_fun, NULL, MSG_host_self(), nargvs - 1, argv);
-
- xbt_free(pr_name);
- xbt_free(mbox);
}
static void shutdown_overhead_process(msg_task_t comm_task)
remaining -= datasize;
send_migration_data(vm_name, src_pm_name, dst_pm_name, datasize, mbox, 1, 0, mig_speed, xfer_cpu_overhead);
-
double computed = lookup_computed_flop_counts(vm, 1, 0);
computed_total += computed;
// launch_deferred_exec_process(vm, overhead, 10000);
// }
}
-
+ xbt_free(mbox);
return computed_total;
}
double clock_post_send = MSG_get_clock();
double bandwidth = ramsize / (clock_post_send - clock_prev_send);
threshold = get_threshold_value(bandwidth, max_downtime);
- XBT_INFO("actual banwdidth %f, threshold %f", bandwidth / 1024 / 1024, threshold);
+ XBT_INFO("actual banwdidth %f (MB/s), threshold %f", bandwidth / 1024 / 1024, threshold);
}
char *pr_name = get_mig_process_rx_name(sg_host_name(vm), sg_host_name(src_pm), sg_host_name(dst_pm));
int nargvs = 5;
char **argv = xbt_new(char *, nargvs);
- argv[0] = xbt_strdup(pr_name);
+ argv[0] = pr_name;
argv[1] = xbt_strdup(sg_host_name(vm));
argv[2] = xbt_strdup(sg_host_name(src_pm));
argv[3] = xbt_strdup(sg_host_name(dst_pm));
argv[4] = NULL;
MSG_process_create_with_arguments(pr_name, migration_rx_fun, NULL, dst_pm, nargvs - 1, argv);
-
- xbt_free(pr_name);
}
{
char *pr_name = get_mig_process_tx_name(sg_host_name(vm), sg_host_name(src_pm), sg_host_name(dst_pm));
int nargvs = 5;
char **argv = xbt_new(char *, nargvs);
- argv[0] = xbt_strdup(pr_name);
+ argv[0] = pr_name;
argv[1] = xbt_strdup(sg_host_name(vm));
argv[2] = xbt_strdup(sg_host_name(src_pm));
argv[3] = xbt_strdup(sg_host_name(dst_pm));
argv[4] = NULL;
MSG_process_create_with_arguments(pr_name, migration_tx_fun, NULL, src_pm, nargvs - 1, argv);
-
- xbt_free(pr_name);
}
/* wait until the migration have finished */
{
msg_task_t task = NULL;
msg_error_t ret = MSG_task_recv(&task, mbox_ctl);
+
xbt_assert(ret == MSG_OK);
char *expected_task_name = get_mig_task_name(sg_host_name(vm), sg_host_name(src_pm), sg_host_name(dst_pm), 4);
xbt_assert(strcmp(task->name, expected_task_name) == 0);
xbt_free(expected_task_name);
+ MSG_task_destroy(task);
}
xbt_free(mbox_ctl);
* For example,
* On PM0, there are Task1 and VM0.
* On VM0, there is Task2.
- * Now we bound 75% to Task1@PM0 and bound 25% to Task2@VM0.
+ * Now we bound 75% to Task1\@PM0 and bound 25% to Task2\@VM0.
* Then,
- * Task1@PM0 gets 50%.
- * Task2@VM0 gets 25%.
- * This is NOT 75% for Task1@PM0 and 25% for Task2@VM0, respectively.
+ * Task1\@PM0 gets 50%.
+ * Task2\@VM0 gets 25%.
+ * This is NOT 75% for Task1\@PM0 and 25% for Task2\@VM0, respectively.
*
* This is because a VM has the dummy CPU action in the PM layer. Putting a
* task on the VM does not affect the bound of the dummy CPU action. The bound