X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/c2f2254d18ea12282dbc23cc2ff196be1ed89423..fb331c1b87db5b62f64c6d92e1822a67288d04bf:/src/msg/msg_vm.c diff --git a/src/msg/msg_vm.c b/src/msg/msg_vm.c index 095480a18d..a4d0401c28 100644 --- a/src/msg/msg_vm.c +++ b/src/msg/msg_vm.c @@ -1,4 +1,4 @@ -/* 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 @@ -171,30 +171,32 @@ int MSG_vm_is_restoring(msg_vm_t vm) * All parameters are in MBytes * */ -msg_vm_t MSG_vm_create(msg_host_t ind_pm, const char *name, int ncpus, int ramsize, - int net_cap, char *disk_path, int disksize, - int mig_netspeed, int dp_intensity) +msg_vm_t MSG_vm_create(msg_host_t ind_pm, const char *name, + int ncpus, int ramsize, + int net_cap, char *disk_path, int disksize, + int mig_netspeed, int dp_intensity) { - /* For the moment, intensity_rate is the percentage against the migration bandwidth */ - double host_speed = MSG_get_host_speed(ind_pm); - double update_speed = ((double)dp_intensity/100) * mig_netspeed; + /* For the moment, intensity_rate is the percentage against the migration + * bandwidth */ + double host_speed = MSG_get_host_speed(ind_pm); + 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; - memset(¶ms, 0, sizeof(params)); - params.ramsize = 1L * 1024 * 1024 * ramsize; - //params.overcommit = 0; - params.devsize = 0; - params.skip_stage2 = 0; - params.max_downtime = 0.03; - params.dp_rate = (update_speed * 1L * 1024 * 1024 ) / host_speed; - params.dp_cap = params.ramsize / 0.9; // working set memory is 90% - params.mig_speed = 1L * 1024 * 1024 * mig_netspeed; // mig_speed - - //XBT_INFO("dp rate %f migspeed : %f intensity mem : %d, updatespeed %f, hostspeed %f",params.dp_rate, params.mig_speed, dp_intensity, update_speed, host_speed); - simcall_host_set_params(vm, ¶ms); - - return vm; + msg_vm_t vm = MSG_vm_create_core(ind_pm, name); + s_ws_params_t params; + memset(¶ms, 0, sizeof(params)); + params.ramsize = (sg_size_t)ramsize * 1024 * 1024; + //params.overcommit = 0; + params.devsize = 0; + params.skip_stage2 = 0; + params.max_downtime = 0.03; + params.dp_rate = (update_speed * 1024 * 1024) / host_speed; + params.dp_cap = params.ramsize / 0.9; // working set memory is 90% + params.mig_speed = (double)mig_netspeed * 1024 * 1024; // mig_speed + + //XBT_INFO("dp rate %f migspeed : %f intensity mem : %d, updatespeed %f, hostspeed %f",params.dp_rate, params.mig_speed, dp_intensity, update_speed, host_speed); + simcall_host_set_params(vm, ¶ms); + + return vm; } @@ -577,14 +579,12 @@ static void launch_deferred_exec_process(msg_host_t host, double computation, do 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); } @@ -627,15 +627,12 @@ static void start_overhead_process(msg_task_t comm_task) 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) @@ -929,7 +926,7 @@ static int migration_tx_fun(int argc, char *argv[]) s_ws_params_t params; simcall_host_get_params(vm, ¶ms); const sg_size_t ramsize = params.ramsize; - const long devsize = params.devsize; + const sg_size_t devsize = params.devsize; const int skip_stage1 = params.skip_stage1; const int skip_stage2 = params.skip_stage2; const double dp_rate = params.dp_rate; @@ -1068,29 +1065,25 @@ static void do_migration(msg_vm_t vm, msg_host_t src_pm, msg_host_t dst_pm) 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 */